Привязка к свойству ViewModel внутри ItemContainerStyle для использования в триггерах

#wpf #data-binding #datatrigger #itemcontainerstyle

#wpf #привязка к данным #datatrigger #itemcontainerstyle

Вопрос:

У меня есть TreeView, DataContext которого является моей ViewModel. ViewModel имеет свойство MyProp . Внутри TreeView я определил ItemContainerStyle с помощью DataTrigger:

 <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 имеет Элемент в качестве DataContext, а не ViewModel, привязка в DataTrigger не работает. Итак, как мне указать привязку, к которой я хочу привязаться ViewModel.MyProp ? Кажется, я не могу установить DataContext стили и триггеры, так как еще я могу это сделать?

Ответ №1:

Вы пытались использовать свой относительный источник:

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