Итак, у меня есть этот стиль WPF:
<Style x:Key="SmallLinkButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<TextBlock TextDecorations="Underline">
<ContentPresenter />
</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="#234D20" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Foreground" Value="#77AB59" />
</Trigger>
</Style.Triggers>
</Style>
Чтобы создать кнопку ссылки, которая меняет свой цвет при наведении курсора мыши.И у меня есть набор кнопок с этим стилем, и я хочу, чтобы после того, как пользователь щелкнул мышью, изменил передний план кнопки на второе значение, если только он не нажмет другую кнопку.
Это возможносделать это просто с помощью стиля?Я не верю в это, но я новичок в WPF или, как бы вы реализовали эту функцию.
Заранее спасибо.
Решение
Как и предполагалось @Phil, решением было использование контейнера, в данном случае списка, в стиле:
<!-- Start of the menu -->
<!-- Horizontal listbox-->
<Style x:Key="MenuListBox" TargetType="ListBox">
<Setter Property="BorderBrush" Value="{x:Null}" />
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Listbox item with the special behavior -->
<Style x:Key="MenuListBoxItem" TargetType="ListBoxItem">
<Style.Resources>
<!-- SelectedItem with focus -->
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
Color="Transparent" />
<!-- SelectedItem without focus -->
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
Color="Transparent" />
<!-- SelectedItem text foreground -->
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}"
Color="{DynamicResource {x:Static SystemColors.ControlTextColorKey}}" />
</Style.Resources>
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
</Style>
<!-- Menu buttons -->
<Style x:Key="BigMenuLinkButton" TargetType="TextBlock">
<Setter Property="FontFamily" Value="Segoe UI Light"/>
<Setter Property="FontSize" Value="36" />
<Setter Property="Foreground" Value="#C9DF8A" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Foreground" Value="#77AB59" />
</Trigger>
<DataTrigger Value="True" Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}">
<Setter Property="Foreground" Value="#234D20"/>
</DataTrigger>
</Style.Triggers>
</Style>
<Style x:Key="MediumMenuLinkButton" TargetType="TextBlock">
<Setter Property="FontSize" Value="24" />
<Setter Property="Foreground" Value="#C9DF8A" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Foreground" Value="#77AB59" />
</Trigger>
<DataTrigger Value="True" Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}">
<Setter Property="Foreground" Value="#234D20"/>
</DataTrigger>
</Style.Triggers>
</Style>
<!-- End of the menu -->