0

我有一个 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 不起作用。那么如何告诉我要绑定的 BindingViewModel.MyProp呢?看来我无法DataContext在样式和触发器中设置,那我还能怎么做呢?

4

1 回答 1

2

您是否尝试获取您的相对来源:

     <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.MyProp}" Value="  ">
于 2016-10-10T11:01:46.773 回答