-1

我需要显示这样的图标:

<Geometry x:Key="Geometry.LeftArrow">M 6.5 0.5 L 7.5 1 L 7.5 0 L 6.5 0.5 z</Geometry>

如果我把它们放在按钮中,它们就可以了。但是我需要在许多其他地方展示它们,但它们没有展示。有时它有助于定义描边/填充,但这是错误的。我不想编造一些硬编码的颜色,并且在主题/样式更改时看起来很愚蠢。

这有效:

<Button>
    <Path Data="{StaticResource Geometry.LeftArrow}" Stretch="Uniform" MaxHeight="12"/>
</Button>

这不会:

<Label>
    <Path Data="{StaticResource Geometry.LeftArrow}" Stretch="Uniform" MaxHeight="12"/>
</Label>

那么这里的逻辑是什么,我怎么能把它们展示在一些文本框旁边呢?

4

1 回答 1

1

我试过这个,路径没有在按钮中获得默认填充或描边。

我的解决方案是定义一个默认Path样式,将填充(或描边)设置为{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}.

<Style TargetType="Path">
    <Setter 
        Property="Fill" 
        Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" 
        />
</Style>

一个精心设计的主题应该使用那些SystemColors刷键。如果主题设计得不好,您可以添加一些“垫片”资源定义,这些定义将SystemColors画笔键定义到适当的主题资源。

如果我想提供Path默认填充Button但不在其他地方,我可以通过Path在样式的资源中定义该默认样式来做到这一点Button

<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
    <Style.Resources>
        <Style TargetType="Path">
            <Setter 
                Property="Fill" 
                Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" 
                />
        </Style>
    </Style.Resources>

    <!-- other stuff -->
</Style>

现在你已经和你的风格和偶像人物谈过了(果冻;我们必须为自己做这些事情),看起来这就是这里发生的事情的本质。

于 2016-08-18T14:37:14.830 回答