我正在使用 Material Design Font Icons 作为我项目的图标源。问题是,由于它是一种字体,因此在选择时和取消选择时需要不同的颜色(如图所示 - 取消选择的白色图标有白色图标,这并不好)。
如何修改Style
图标的颜色,就像文本和背景颜色一样?
<!-- redacted because it would've never worked -->
编辑1:
共识是使用 VSM 是行不通的,因为它不是从VisualElement
. 我已经使用Trigger
- 但我对实现不满意。这有效:
<Shell.Resources>
<ResourceDictionary>
<Style TargetType="FlyoutItem" BasedOn="{StaticResource BaseStyle}">
<Style.Triggers>
<Trigger TargetType="FlyoutItem" Property="IsChecked" Value="True">
<Setter Property="Title" Value="Checked" />
<Setter Property="FlyoutIcon" >
<Setter.Value>
<FontImageSource FontFamily="MaterialDesignIconFont"
Glyph="{StaticResource InformationOutlineGlyph}"
Color="White" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
</Shell.Resources>
<FlyoutItem Title="About" >
<FlyoutItem.Icon>
<FontImageSource FontFamily="MaterialDesignIconFont"
Glyph="{StaticResource InformationOutlineGlyph}"
Color="Green" />
</FlyoutItem.Icon>
<ShellContent Route="AboutPage" ContentTemplate="{DataTemplate local:AboutPage}" />
</FlyoutItem>
...但是正如您所看到的,我必须设置整个FontImageSource
值 - 它具有Glyph
属性 - 所以我必须Style
每次为每个FlyoutItem
.
我怎样才能将其重写Style
为可重用并且仅更改颜色,而不更改其他属性?