Treeview TextBlock中的动态路径



我正试图通过用户选择即下拉动态改变WPF Treeview TextBlock中的路径。在用户交互时,路径应该采用预定义的值,即Name, Type, Order

<TreeView x:Name="Main" ItemsSource="{Binding Items, NotifyOnSourceUpdated=True}"   >
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type models:Root}" 
ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding Path=Name}" /> <--- Dynamically change this
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>

在c#中有一个BindingExpression助手类,但我不清楚如何在ViewModel场景中使用它

如果您想要更改实际的绑定路径,您需要通过编程来完成。在XAML中不能动态地更改绑定路径。

一个更好的选择是根据ComboBox中的选择更改source属性的,或者使用带有触发器的Style。像这样:
<HierarchicalDataTemplate DataType="{x:Type models:Root}" 
ItemsSource="{Binding Path=Children}">
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedValue}" Value="Name">
<Setter Property="Content">
<Setter.Value>
<TextBlock Text="{Binding Name}" />
</Setter.Value>
</Setter>
</DataTrigger>
...
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</HierarchicalDataTemplate>

最新更新