Есть стиль для Button
c шаблоном в виде иконки и текста, который применяется к нескольким кнопкам:
<Style x:Key="SimpleButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="Transparent">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Image x:Name="Image" Grid.Row="0"
Source="{Binding RelativeSource={RelativeSource AncestorType={x:Type Button}}, Path=Tag}"
Width="16" Height="16" />
<TextBlock x:Name="TextBlock" Grid.Row="1" Text="{TemplateBinding Content}"
Foreground="#5b5b5b" />
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="TextBlock" Property="Foreground" Value="#c0c0c0" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Когда кнопка неактивна нужно подставить серую иконку (у каждой кнопки, к которой применен стиль, она своя), поэтому я хотел применять стиль следующим образом:
<Button Content="Фильтры"
Tag="/Resources/Icons/search/filters.png" >
<Button.Style>
<Style BasedOn="{StaticResource SimpleButtonStyle}" TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsStarted}" Value="True">
<Setter Property="IsEnabled" Value="False" />
<Setter Property="Tag" Value="/Resources/Icons/search/filters-disabled.png" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
То есть хотел менять свойство Tag
, когда кнопка будет становится неактивной. Но такой подход не работает — иконка остается прежней.
Почему такой способ не срабатывает?
Вы устанавливаете Tag
вручную, а меняете его через стиль. Так, к сожалению, работать не будет: значения, установленные вручную, всегда «сильнее» установленных через стиль, поэтому стиль не может из переопределить.
Устанавливайте начальное значение тоже через стиль.
<Button Content="Фильтры">
<Button.Style>
<Style BasedOn="{StaticResource SimpleButtonStyle}" TargetType="{x:Type Button}">
<Setter Property="Tag" Value="/Resources/Icons/search/filters.png"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsStarted}" Value="True">
<Setter Property="IsEnabled" Value="False" />
<Setter Property="Tag" Value="/Resources/Icons/search/filters-disabled.png" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Документация: https://msdn.microsoft.com/ru-ru/library/ms743230(v=vs.110).aspx
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите пожалуйста в чём ошибкаПытаюсь использовать рекурсивный метод на самодельном односвязном списке, но появляется ошибка System