我需要创建一个只有一个窗口的应用程序,然后点击一个按钮就会改变窗口的内容。
我不知道该怎么做。我想使用用户控件,但我不认为这是最好的方法。也许有tab,但它不会尊重我想拥有的UI。那么最好的方法是如何实现这一目标的呢? WPF窗口上的动态内容(当然,我需要通过不同视图传递数据和变量)
这是我想要做的UI的“示例”。请原谅如果不好,我会尽快做到这一点:)
答案 0 :(得分:1)
MVVM明智的是,每个页面都需要不同的视图(以及每个视图的一些基类)。所以UserControl
是要走的路。
但是,对于包含折叠标题的多个页面,可以使用TabControl
:
<TabControl>
<TabItem Visibility="Collapsed">
<Label Content="First page"/>
</TabItem>
<TabItem Visibility="Collapsed">
<Label Content="Second page"/>
</TabItem>
</TabControl>
要编辑特定页面,请在设计器中选择相应的项目,然后您可以查看其内容。
对于按钮,您需要一个特殊区域(因为按钮在页面之间是通用的)。这样你的窗口就会包含像
这样的网格<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Image Grid.Row="0" Stretch="None" HorizontalAlignment="Left" VerticalAlignment="Top" Source="logo.png"/>
<TabControl Grid.Row="1" SelectedIndex="{Binding Page}">
... tab items
</TabControl>
<StackPanel Grid.Row="2" Orientation="Horizontal" FlowDirection="RightToLeft">
<Button Command="{Binding CommandFinish}" Content="Finish"/>
<Button Command="{Binding CommandNext}" Content="Next"/>
<Button Command="{Binding CommandPrevious}" Content="Previous"/>
... and so on, from right to left
</StackPanel>
</Grid>
为了至少利用MVVM,您可以拥有页码,这样您的ViewModel就可以知道每页需要多少页面以及每个页面可以做什么(以控制按钮可见性和导航)。
答案 1 :(得分:0)
您提供的图像看起来像一个典型的向导。 Extended WPF Toolkit已附带向导。而且它完全免费。我建议你至少看看它。它允许您将任何类型的内容应用于任何页面。此外,还可以修改向导本身的行为。