#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=" ">