将带有ViewBox的XAML文件作为资源嵌入

4

我有一个XAML资源。

资源文件夹中的一个名为“cancel_gray.xaml”的文件的屏幕截图

它看起来像这样。

由包含多个DrawingBrushes和GeometryDrawings的ViewBox创建的X按钮的图像

如何在按钮内显示此资源?


注意:

  • 我不想将XAML图像的代码复制到App.xaml作为资源,我想从资源文件夹中正确引用它。
  • 我可以将其转换为SVG格式,但我更愿意使用本地格式的图像。

看起来非常复杂,但实际上只需要用由两条线构成的简单几何路径就可以绘制出来。 - Clemens
1
我没有创建这个资源,它来自于Visual Studio 2017图像集合。 - zkdr
另外,如果有人想给我关于下次在SO上如何提出这样的问题的建议,请让我知道我该如何改进。 - zkdr
1个回答

2
这个例子将引导您正确地引用xaml资源。 步骤1 ResourceXaml (在资源文件夹中的Example.xaml)
<Viewbox x:Key="A_Name">
  // blahh...
</Viewbox>

app.xaml

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>    
            <!--Reference xaml file-->            
            <ResourceDictionary Source="/Resources/Example.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>        
</Application.Resources>

步骤2

YourPage.xaml 中的按钮

<Button Content="{StaticResource Image_KeyName_In_Referenced_XAML_File}" />

谢谢。我最终只是将ViewBox复制并粘贴到App.xaml中,给它一个键,并使用该键作为引用。让我困惑的是,我不能在<Button>标记内部的<Button.Content>标记中使用{StaticResource},我必须在<Button>的Content属性中设置它。我应该使用<ResourceDictionary>及其相关的内部标记,而不是直接将资源放入<Application.Resources>中吗?我可以在没有它们的情况下很好地引用所有资源。 - zkdr
1
@zdwyer,为了避免使app.xaml不受管理,请为每种类型的资源创建单独的.xaml文件。这样,每当您需要时,就可以轻松地编辑它并将其复制到另一个项目中使用,这样您就不需要在每个项目中重复复制和粘贴相同的代码,只需附加您的xaml文件即可。这主要有助于保持代码的清洁和管理。 - Shubham Sahu
2
你不能仅仅通过使用Source属性将普通的ViewBox xaml添加到ResourceDictionary中进行引用。该属性期望在引用的xaml文件中有一个ResourceDictionary根对象。但是,你可以直接将此ViewBox xaml添加到ResourceDictionary xaml文件中,并在app.xaml或其他ResourceDictionary中引用它。或者,你需要向ResourceDictionary添加一个包装器对象,例如<Frame>,以便你可以通过包装器对象的Source属性引用任何xaml文件,然后使用其Content属性获取ViewBox对象。 - Anateus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接