我正在使用 Mahapps.Metro 并希望根据属性更改图标。
Here is the Mahapps sample for their Icons
仅设置矩形的背景颜色(“填充”),一切正常。一旦设置了 OpacityMask,整个矩形就会保持空白。
<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>
有什么想法我做错了吗?
最佳答案
经过很长时间,我找到了一个适合我的解决方案:
第一个问题是缺少使用的资源 BlackBrush Icons.xaml 内
诀窍是替换整个矩形。我为这项工作选择了 ContentControl
<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>
关于c# - 带有 OpacityMask 的 WPF DataTrigger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28637973/