WPF RelativeSource проблема с вложенными элементами управления
У меня есть следующая разметка:
<Button Name="m_SaveButton" Command="{Binding SaveCommand}">
<StackPanel>
<Image Source="{StaticResource IconSave16}">
<Image.Style>
<Style TargetType="Image">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsEnabled, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Button}}}" Value="False">
<Setter Property="Source" Value="{StaticResource IconSaveInactive16}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
<Label Content="Save" />
</StackPanel>
</Button>
Я хочу изменить изображение, вложенное в кнопку, когда Button.IsEnabled имеет значение false. Разметка выше не работает.
Я пытался использовать код Мелеака, найденный здесь: WPF Mouseover Trigger Effect для дочерних элементов управления
Кто-нибудь может предложить мне решение для этого?
Заранее спасибо!
1 ответ
Решение
Вы не можете изменить локальное значение в стиле из-за значения приоритета. Это должно работать.
<Image>
<Image.Style>
<Style TargetType="Image">
<Setter Property="Source" Value="{StaticResource IconSave16}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsEnabled, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Button}}}" Value="False">
<Setter Property="Source" Value="{StaticResource IconSaveInactive16}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>