【问题标题】:Change Sub Form Based On Selected Option in C# WPF Project根据 C# WPF 项目中的选定选项更改子表单
【发布时间】:2010-01-31 12:35:24
【问题描述】:

我为这个糟糕的标题道歉,我不知道如何解释它。

我有一个类似this 的界面(抱歉,我是新手,无法直接发布图片)。

我希望根据左侧的树选择来显示右侧的显示控件。在 WPF 项目中执行此操作的最简单方法是什么?有没有更好的方法来解决这个问题?

谢谢!

【问题讨论】:

    标签: c# wpf windows forms


    【解决方案1】:

    理想情况下,您将使用 MVVM 设计模式来执行此操作,但如果您正在寻找一种简单易用的方法来使其工作,您可以尝试这个...创建 UserControls 成为不同的子表单,然后抛出他们成一个框架。您也可以使用网格,但框架允许您在需要时使用导航(前进、后退)。

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200"/>
            <ColumnDefinition Width="5"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
    
        <GridSplitter Grid.Column="1" VerticalAlignment="Stretch" HorizontalAlignment="Right"/>
    
        <!--TreeView Code Here-->
        <TreeView x:Name="treeView" SelectedItemChanged="TreeView_SelectedItemChanged">
            <TreeViewItem Header="Devices" IsExpanded="True">
                <TreeViewItem Header="Device 1" Tag="UserControl1.xaml"/>
                <TreeViewItem Header="Device 2" Tag="UserControl2.xaml"/>
                <TreeViewItem Header="Device 3" Tag="UserControl3.xaml"/>
            </TreeViewItem>
            <TreeViewItem Header="Users" IsExpanded="True">
                <TreeViewItem Header="Add" Tag="UserControl4.xaml"/>
                <TreeViewItem Header="Edit/Delete" Tag="UserControl5.xaml"/>
            </TreeViewItem>
        </TreeView>
    
        <!--Frame to hold your subform (UserControl)-->
        <Frame x:Name="SubForm" Grid.Column="2" NavigationUIVisibility="Hidden"/>
    </Grid>
    

    代码隐藏:

    private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {
        TreeViewItem item = (TreeViewItem)treeView.SelectedItem;
        SubForm.Source = new Uri(item.Tag.ToString(), UriKind.RelativeOrAbsolute);
    }
    

    【讨论】:

    • 非常感谢您的回答。这为我指明了正确的方向,并为我提供了几个选择。我还将研究 MVVM 设计模式。 - 干杯!
    【解决方案2】:

    您应该使用 MDI 表单。在其中添加您的树视图控制器。在树视图事件处理程序中,您可以根据所选项目显示子表单。确保将子表单的“MdiParent”属性设置为 MDI 表单。

    【讨论】:

      猜你喜欢
      • 2013-01-14
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 2012-02-11
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      相关资源
      最近更新 更多