我使用ResourceDictionary
表示我的所有图标:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Canvas x:Key="Icon.Refresh"
Width="32" Height="32"
Clip="F1 M 0,0L 32,0L 32,32L 0,32L 0,0">
<Path Width="28" Height="28"
Canvas.Left="2" Canvas.Top="2"
Stretch="Fill"
Data="..." />
</Canvas>
</ResourceDictionary>
实际的XAML:
<Button Content="{StaticResource Icon.Refresh}"
Height="40"
Width="40" />
这很好用,因为我的大部分按钮都是这么大。但是当我想在较小的按钮上使用它时会溢出按钮:
<Button Content="{StaticResource Icon.Refresh}"
Height="30"
Width="30" />
有没有办法设置StaticResource
的大小或其他任何聪明的事情?
答案 0 :(得分:4)
我想你可以将Canvas
放在<ViewBox>
内,以便自动缩小。
答案 1 :(得分:3)
在这种情况下,Canvas
不是必需的,因此作为路径的属性Canvas.Left
和Canvas.Top
。据我所知,它会自动添加生成这些路径的应用程序(例如Blend)。此外,每个Path
面板画布的性能保持成本非常高。
您无需存储资源的宽度和高度,而不是将Stretch="Fill"
添加到路径:
<Button Width="30" Height="30">
<Path Name="MyPath"
Fill="Bisque"
Stretch="Fill"
Data="..." />
</Button>
最重要的是,对象路径为 Data
。您需要执行以下操作:
在资源App.xaml
,<Window.Resources>
等中,使用密钥添加路径:
<Path x:Key="MyPath" Data="F1 M 0,0L ..." />
在Style
或其他地方使用如下:
<Path x:Name="MyPathButton"
...
Fill="{StaticResource ButtonBackground}"
Data="{Binding Source={StaticResource MyPath}, Path=Data}" />
或者这样做:将数据放入Geometry
:
<Geometry x:Key="MagnifierIconGeometry">M44,12 C32,12 22,22 22,34 22,46 32,56 44,56 56,56 66,46 66,34 66,22 56,12 44,12z M44,0 C63,0 78,15 78,34 78,53 63,68 44,68 40,68 36.5,67.5 33,66 L32.5,66 14,90 0,79.5 18,55.5 17,55 C13,49 10,42 10,34 10,15 25,0 44,0z</Geometry>
并像这样使用:
<Path Data="{StaticResource MagnifierIconGeometry}"
Fill="Black"
Stretch="Fill" />