C# WPF DataTrigger从不激发以扩展TreeView
我有下面的XAML,当特定属性ExpandNodes为True时,它应该扩展我的整个树视图,但它从未被触发C# WPF DataTrigger从不激发以扩展TreeView,c#,wpf,C#,Wpf,我有下面的XAML,当特定属性ExpandNodes为True时,它应该扩展我的整个树视图,但它从未被触发 <TreeView> <TreeView.ItemContainerStyle> <Style TargetType="{x:Type TreeViewItem}"> <Setter Property="IsExpanded" Value="False" />
<TreeView>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="False" />
<Style.Triggers>
<DataTrigger Binding="{Binding ExpandNodes}" Value="True">
<Setter Property="IsExpanded" Value="True" />
</DataTrigger>
<DataTrigger Binding="{Binding ExpandNodes}" Value="False">
<Setter Property="IsExpanded" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
// some other code
</TreeView>
太复杂了,您可以简单地将IsExpanded属性绑定到对象并引发PropertyChanged事件
<TreeView>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding ExpandNodes,
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,
TargetNullValue=False}" />
</Style>
</TreeView.ItemContainerStyle>
// some other code
</TreeView>
当ExpandNodes值更改时,会有一个属性更改通知?是的,请参阅上面我对ViewModel的部分编辑。如果有一个ExpandNodes属性与ItemsSource集合处于同一级别,请尝试执行此操作的{Binding DataContext.ExpandNodes,RelativeSource={RelativeSource AncestorType=TreeView}。非常感谢。
<TreeView>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding ExpandNodes,
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,
TargetNullValue=False}" />
</Style>
</TreeView.ItemContainerStyle>
// some other code
</TreeView>