2010-01-31 37 views
0

对于不好的标题我很抱歉,我不知道如何解释它。基于C#WPF项目中的选定选项更改子表格

我有一个接口,如this(抱歉不能直接发布图像,因为我是新的)。

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

谢谢!

回答

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); 
} 
+0

非常感谢您的回答。这使我指出了正确的方向,并给了我几个选择。我也将研究MVVM设计模式。 - 干杯! – Cam 2010-01-31 15:26:20

0

你应该用MDI形式。添加你的树视图控制器。在treeview事件处理程序中,您可以根据您选择的项目显示子窗体。确保将子窗体的“MdiParent”属性设置为MDI窗体。

相关问题