我有一个TreeView,其DataContext是我的ViewModel。 ViewModel具有属性MyProp
。在TreeView中,我使用DataTrigger定义了一个ItemContainerStyle:
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Style.Triggers>
<DataTrigger Binding={MyProp} Value="...">
<!-- does not work because DataContext is the Item, not the ViewModel -->
<Setter Property="Focusable" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
但由于ItemContainerStyle有一个Item作为其DataContext而不是ViewModel,因此DataTrigger中的Binding不起作用。那么如何告诉Binding我想要绑定到ViewModel.MyProp
?我似乎无法在样式和触发器中设置DataContext
,那么我还能怎么做呢?
答案 0 :(得分:2)
您是否尝试过相关来源:
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.MyProp}" Value=" ">