我需要显示这样的图标:
<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>
如果我把它们放在按钮上就可以了。但是我需要在许多其他地方展示它们,但它们没有显示出来。有时它有助于定义Stroke / Fill,但这是错误的。我不想弥补一些硬编码的颜色,当主题/风格改变时看起来很愚蠢。
这有效:
<Button>
<Path Data="{StaticResource Geometry.LeftArrow}" Stretch="Uniform" MaxHeight="12"/>
</Button>
这不是:
<Label>
<Path Data="{StaticResource Geometry.LeftArrow}" Stretch="Uniform" MaxHeight="12"/>
</Label>
那么这里的逻辑是什么?我怎么能只显示它们让我们说一些TextBox旁边?
答案 0 :(得分:1)
我试过这个并且Path没有在Button中获得默认填充或描边。
我的解决方案是定义一个默认的Path
样式,它将Fill(或Stroke,无论哪个)设置为{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>
现在你已经和你的风格和偶像人谈过了(所以果冻;我们必须为自己做这些事情),看起来这就是这里发生的事情的本质。