绑定到ItemContainerStyle中的ViewModel属性以用于触发器

时间:2016-10-10 10:52:10

标签: wpf data-binding datatrigger itemcontainerstyle

我有一个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,那么我还能怎么做呢?

1 个答案:

答案 0 :(得分:2)

您是否尝试过相关来源:

     <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.MyProp}" Value="  ">