我正在使用Mahapps.Metro,并希望根据属性更改图标。
这是Mahapps的图标样本
只设置矩形的背景色("填充")一切都很好。一旦设置了OpcityMask,整个矩形将保持空白。
<Rectangle Width="20" Height="20">
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsOnline}" Value="True">
<Setter Property="Fill" Value="Green" />
<Setter Property="OpacityMask">
<Setter.Value>
<VisualBrush Stretch="Fill" Visual="{StaticResource appbar_disconnect}" />
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsOnline}" Value="False">
<Setter Property="Fill" Value="Red" />
<Setter Property="OpacityMask">
<Setter.Value>
<VisualBrush Stretch="Fill" Visual="{StaticResource appbar_connect}" />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
你知道我做错了什么吗?
过了很长时间,我找到了一个可行的解决方案:
-
第一个问题是缺少使用的Ressource BlackBrushIcons.xaml 内部
-
的诀窍是替换整个矩形。我参加了这份工作的内容控制
<ContentControl>
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsOnline}" Value="True">
<Setter Property="Content" >
<Setter.Value>
<Rectangle Fill="Green" Width="20" Height="20">
<Rectangle.Resources>
<SolidColorBrush x:Key="BlackBrush" Color="Black" />
</Rectangle.Resources>
<Rectangle.OpacityMask>
<VisualBrush Visual="{StaticResource appbar_disconnect}" Stretch="Fill" />
</Rectangle.OpacityMask>
</Rectangle>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsOnline}" Value="False">
<Setter Property="Content" >
<Setter.Value>
<Rectangle Fill="Red" Width="20" Height="20">
<Rectangle.Resources>
<SolidColorBrush x:Key="BlackBrush" Color="Black" />
</Rectangle.Resources>
<Rectangle.OpacityMask>
<VisualBrush Visual="{StaticResource appbar_connect}" Stretch="Fill" />
</Rectangle.OpacityMask>
</Rectangle>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>