A DataTrigger
существует в пределах ControlTemplate
<DataTrigger
Binding="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},
Path=(ui:TreeViewItemHeader.IsDragTarget)}"
Value="True">
<Setter TargetName="PART_Content" Property="Foreground" Value="Red" />
</DataTrigger>
Связанное свойство IsDragTarget является вложенным свойством, которое закодировано в пользовательский класс элемента управления:
public static readonly DependencyProperty IsDragTargetProperty = DependencyProperty.RegisterAttached
("IsDragTarget",
typeof(bool),
typeof(TreeViewItemHeader),
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
public static void SetIsDragTarget(DependencyObject self, bool value)
{
self.SetValue(IsDragTargetProperty, value);
}
public static bool GetIsDragTarget(DependencyObject self)
{
return (bool)self.GetValue(IsDragTargetProperty);
}
Проблема может быть описана в том, что DataTrigger
появляется только для разрешения значения один раз, когда элемент управления инициализирован. Обновление значения свойства не переворачивает DataTrigger.
Выполнено устранение неполадок:
- В привязку добавлено пустое
IValueConverter
«возвращаемое значение»; IValueConverter.Convert
метод вызывается только один раз.
- Была выполнена отладка, чтобы убедиться, что значение присоединенного свойства изменилось.
- Для свойства
DataTrigger.Value
было установлено False
- начальное значение присоединенного свойства; Сеттеры сработали один раз, когда началось управление. Последующие изменения свойства не вызвали DataTrigger.
- Окно вывода Visual Studio не содержит предупреждений о выражениях привязки.