Изменение подформы на основе выбранного параметра в C # WPF Project - PullRequest
0 голосов
/ 31 января 2010

Я прошу прощения за плохое название, я не знаю, как еще это объяснить.

У меня есть такой интерфейс, как this (извините, я не могу опубликовать изображение напрямую, поскольку я новичок).

И я хочу, чтобы элементы управления отображались справа на основе выбора дерева слева. Какой самый простой способ сделать это в проекте WPF? Есть ли лучший способ сделать это?

Спасибо!

Ответы [ 2 ]

1 голос
/ 31 января 2010

В идеале, вы должны использовать шаблон проектирования 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>

CodeBehind:

private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
    TreeViewItem item = (TreeViewItem)treeView.SelectedItem;
    SubForm.Source = new Uri(item.Tag.ToString(), UriKind.RelativeOrAbsolute);
}
0 голосов
/ 07 ноября 2010

Вы должны использовать форму MDI. Добавьте в него свой контроллер дерева. В обработчиках событий в виде дерева вы можете отображать подформу на основе выбранного элемента. Убедитесь, что для свойства "MdiParent" подчиненной формы установлено значение MDI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...