Pencere Sayfa vs vs WPF için navigasyon UserControl?
Eğer biri bana yardımcı olabilir merak ediyordum. WPF yeniyim ve şu anda masaüstü bir uygulama yazıyorum, ama uygulamanın yeni bir bölüme yönlendirerek zaman kullanmak için ne etrafında başımı almak için görünmüyor.
Benim seçenek gibi görünüyor
- Pencere
- Sayfa
- UserControl
ama aralarındaki fark nedir, ve her birini kullanmam gerektiğini anlamam.
Biri benim için farkları açıklayabilir ve her biri için kullanabilirsiniz bir örnek ver?
CEVAP
BirPencerenesne gibi sesler sadece budur: uygulamanız için. Window
yeni Tamamen yeni bir pencere açılır istediğiniz zaman kullanmanız gerekir. Değişiklikleri genellikle kullanıcı eylemi dayalı bu benim ana Penceresinde dinamik içerik koymayı tercih ederim çünkü WPF 5 ** birden fazla kullanmıyorum.
BirSayfabir sayfa içinde Pencere. Çoğunlukla web tabanlı tek bir tarayıcı olduğu bir XBAP, gibi sistemleri pencere ve farklı sayfaları penceresinde barındırılabilir için kullanılır. Ayrıca sellmeadog said Navigation Applications kullanılabilir.
BirUserControlbir yeniden kullanılabilir kullanıcı tarafından oluşturulan UI için başka bir kontrol eklersiniz aynı şekilde ekleyebileceğiniz bir kontrol. Genellikle ben oluşturmak UserControl
ne zaman istersem inşa bazı özel işlevler (örneğin, bir CalendarControl
), ya da ben büyük bir miktarı ile ilgili XAML kod, gibi bir View
kullanırken MVVM tasarım deseni.
Pencereler arasında gezinirken, sadece Window
yeni bir nesne oluşturur ve bu gösterebilirsin
var NewWindow = new MyWindow();
newWindow.Show();
ama bu cevap başında dediğim gibi, mümkünse birden fazla windows yönetmek için değil tercih ederim.
Navigasyon benim tercih edilen yöntem, bazı dinamik içerik alanı ContentControl
oluşturun ve geçerli görünümü ne olursa olsun UserControl
içeren ile doldurmak için.
<Window x:Class="MyNamespace.MainWindow" ...>
<DockPanel>
<ContentControl x:Name="ContentArea" />
</DockPanel>
</Window>
ve olay gezinmek senin sadece bunu kullanarak ayarlayabilirsiniz
ContentArea.Content = new MyUserControl();
Ama eğer WPF ile çalışıyorsanız, son derece MVVM tasarım deseni öneririm. MVVM kullanarak, bu modeli kullanarak gezinmek istiyorum verilmektedir basic example on my blog bir çok var:
<Window x:Class="SimpleMVVMExample.ApplicationView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SimpleMVVMExample"
Title="Simple MVVM Example" Height="350" Width="525">
<Window.Resources>
<DataTemplate DataType="{x:Type local:HomeViewModel}">
<local:HomeView /> <!-- This is a UserControl -->
</DataTemplate>
<DataTemplate DataType="{x:Type local:ProductsViewModel}">
<local:ProductsView /> <!-- This is a UserControl -->
</DataTemplate>
</Window.Resources>
<DockPanel>
<!-- Navigation Buttons -->
<Border DockPanel.Dock="Left" BorderBrush="Black"
BorderThickness="0,0,1,0">
<ItemsControl ItemsSource="{Binding PageViewModels}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding Name}"
Command="{Binding DataContext.ChangePageCommand,
RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
CommandParameter="{Binding }"
Margin="2,5"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border>
<!-- Content Area -->
<ContentControl Content="{Binding CurrentPageViewModel}" />
</DockPanel>
</Window>
Nasıl Jilet gibi bir ad almak için Say...
Nasıl Vim dikey bölünmüş pencere boyut...
saf JavaScript jQuery eşdeğer'in ...
Nasıl '' düğmesini gizlemek ...
nasıl iFrame Ana Sayfa jquery kullanar...