如何在资源字典中提供矢量图标的链接?

时间:2019-05-30 02:16:51

标签: c# wpf xaml resources

我正在尝试在wpf应用程序中使用矢量图像。我在“资源”文件夹中有一个图标“ ic_document.xaml”,这里是:

<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Name="Svg63" Width="50"
    Height="50">
  <Canvas Name="Sf1">
    <Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="Path2" Fill="#000000"
          Data="M 7 2 V 48 H 43 V 14.59 l -0.28 -0.31 -12 -12 L 30.406 2 Z M 9 4 H 29 V 16 H 41 V 46 H 9 Z M 31 5.4375 39.5625 14 H 31 Z" />    
   </Canvas>
</Canvas>

icon in Folder

我知道,如果我想在应用程序中使用它,那么我应该创建一个“ ResourceDictionary”,然后将该代码复制粘贴到它。但是我可以更简单地做到这一点,仅提供ic_document.xaml的链接吗?像这样

<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
  <Canvas x:Key="IcTest">
     //Link to ic_document.xaml
  </Canvas>
</ResourceDictionary>

我该怎么办?

1 个答案:

答案 0 :(得分:0)

首先,我想回答是否可以链接ic_document.xaml答案是不,我们不能做类似的事情,但是我们可以在您的XAML文件中创建一个样式并使用它

资源文件

<Style x:Key="MyIcon" TargetType="Path">
            <Setter Property="Data" Value="F1 M 22,12L 26,12L 26,22L 36,22L 36,26L 26,26L 26,36L 22,36L 22,26L 12,26L 12,22L 22,22L 22,12 Z"></Setter>
            <Setter Property="Fill" Value="#000000"></Setter>
        </Style>

查看

 <Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Width="50"
    Height="50">
            <Canvas >
                <Path Style="{StaticResource MyIcon}">
                </Path>
            </Canvas>

请注意,如果您有多个主题并且需要使用DynamicResource,则需要使用PathGeometry进行设置

资源文件

<PathGeometry x:Key="MyIcon" >
            <PathFigure StartPoint="0,0" >
                <LineSegment Point="0,50"/>
                <LineSegment Point="100,50"/>
                <LineSegment Point="100,20"/>
                <LineSegment Point="80,0"/>
                <LineSegment Point="0,0"/>
            </PathFigure>
        </PathGeometry>

查看

<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Name="Svg63" Width="50"
    Height="50">
            <Canvas Name="Sf1">
                <Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="Path2" Fill="#000000"
          Data="{DynamicResource MyIcon}" />
            </Canvas>