我在WPF中以类似于Windows资源管理器的方式制作应用程序,左侧是TreeView,右侧是窗格.
我希望右窗格的内容根据TreeView中所选元素的类型进行更改.
例如,假设树视图中的顶层包含类"A"的对象,如果展开"A"对象,您将看到"B"对象列表作为"A"对象的子对象.
如果选择"A"对象,我希望右窗格显示"A"的用户控件,如果选择"B",我希望右窗格显示"B"的用户控件.
我目前的工作是:
但是,我确信有更好/更优雅的方式根据选择绑定的类型切换视图,可能通过更多地使用数据绑定...任何想法?
Mat*_*ton 10
您是否考虑将ContentControl显示为右侧窗格,并使用DataTemplates自定义内容?然后,您只需将右窗格绑定到TreeView的选定项即可.
例如:
<ContentControl Content="{Binding SelectedItem,ElementName=treeView1}">
<ContentControl.Resources>
<DataTemplate DataType="{x:Type my:A}">
<StackPanel>
<TextBlock Text="Displaying an A!" />
<TextBlock Text="{Binding Foo}" />
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type my:B}">
<StackPanel>
<TextBlock Text="Displaying a B!" />
<TextBlock Text="{Binding Bar}" />
</StackPanel>
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
Run Code Online (Sandbox Code Playgroud)
您可以将ContentPresenter类与DataTemplateSelector一起使用.将Content属性绑定到TreeView.SelectedItem属性,然后使用DataTemplateSelector有条件地选择模板.
| 归档时间: |
|
| 查看次数: |
2189 次 |
| 最近记录: |