在C#WPF项目中根据选定的选项更改子表单

时间:2010-01-31 12:35:25

标签: c# wpf windows forms

我为糟糕的头衔道歉,我不知道如何解释它。

我有一个像this这样的界面(抱歉,我不能直接发布图像)。

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

谢谢!

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

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