2

我正在使用 Mahapps.Metro 并希望根据属性更改图标。

这是他们的图标的 Mahapps 示例

仅设置矩形的 Backgroundcolor("Fill") 一切正常。一旦设置了 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>

任何想法我做错了什么?

4

1 回答 1

4

很长一段时间后,我为我找到了一个可行的解决方案:

  • 第一个问题是 Icons.xaml 中使用的缺少 Ressource BlackBrush

  • 的诀窍是替换整个矩形。我为这份工作拿了一个 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>
于 2015-02-20T21:38:59.643 回答