我有一个带有ResourceDictionary的.xaml文件,其中包含我所有的自定义图标。从资源中显示XAML中图像的首选方式
例如为:
<Canvas x:Key="imgFoo" Width="16" Height="16">
<Path Fill="#FFFF0000" StrokeThickness="3" Stroke="#FFFF0000" StrokeMiterLimit="4" StrokeLineJoin="Round" StrokeStartLineCap="Round" StrokeEndLineCap="Round">
<Path.Data>
<PathGeometry Figures="M 2.0722892 ..... 4.0457831" FillRule="NonZero"/>
</Path.Data>
</Path>
</Canvas>
现在的问题:什么是使用XAML这一资源的最佳方式?
难道例如像这样:
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<ContentControl Content="{StaticResource imgFoo}" />
<TextBlock Text="Foo" />
</StackPanel>
</TabItem.Header>
使用ContentControl中使用,并显示该资源的正确方法是什么?
更新: 和这种使用画笔和边框的方法呢?这是一个好方法吗?
<DrawingBrush x:Key="imgF00">
<DrawingBrush.Drawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Thickness="3" MiterLimit="4" LineJoin="Round" StartLineCap="Round" EndLineCap="Round" Brush="#FFFF0000" />
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 2.0722892 ... 4.0457831" FillRule="NonZero" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
显示它通过边界:
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<Border Background="{StaticResource imgFail2}" Width="16" Height="16" />
<TextBlock Text="Failure" />
</StackPanel>
</TabItem.Header>
对于应用程序中的所有图标,Path属性(Fill,Stroke,StrokeThickness,...)是否相同?或者你是否至少有一组特定的图标路径属性组合? – Clemens
无论如何,你应该避免使用UI元素作为资源。您可以使用PathGeometry作为资源,或者如果每个图标都有不同的填充和描边等,可以使用GeometryDrawing。 – Clemens
当前我的图纸是在此处显示的画布中的路径... – juFo