Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 窗口C/WPF中的动态内容_C#_Wpf_User Interface - Fatal编程技术网

C# 窗口C/WPF中的动态内容

C# 窗口C/WPF中的动态内容,c#,wpf,user-interface,C#,Wpf,User Interface,我需要做一个应用程序,将只有一个窗口,你会改变窗口的内容点击一个按钮 我不知道怎么做。我想使用用户控件,但我不认为这是最好的方法。也许是tab,但它不尊重我想要的UI。那么,最好的归档方式是什么呢?当然,我需要通过differents视图传递数据和变量 下面是我想做的UI示例。如果不好,请原谅,我会尽快这么做: 您提供的映像看起来像一个典型的向导。向导已随附。而且完全免费。我建议你至少看一看。它允许您将任何类型的内容应用于任何页面。此外,还可以修改向导本身的行为。MVVM方面,您需要为每个页面提

我需要做一个应用程序,将只有一个窗口,你会改变窗口的内容点击一个按钮

我不知道怎么做。我想使用用户控件,但我不认为这是最好的方法。也许是tab,但它不尊重我想要的UI。那么,最好的归档方式是什么呢?当然,我需要通过differents视图传递数据和变量

下面是我想做的UI示例。如果不好,请原谅,我会尽快这么做:


您提供的映像看起来像一个典型的向导。向导已随附。而且完全免费。我建议你至少看一看。它允许您将任何类型的内容应用于任何页面。此外,还可以修改向导本身的行为。

MVVM方面,您需要为每个页面提供不同的视图,并为每个视图提供一些基类。因此,用户控制是一种方法

但是,可以对具有折叠标题的多个页面使用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就可以知道总共需要多少页面,以及每个页面可以做些什么来控制按钮的可见性和导航。

您可以使用模板选择器或导航框来实现这一点。你试过这两种吗?事实上,我什么都没试过,我对wpf很陌生,不知道所有的元素。所以我会看看这些