如何包含不是资源的原始xaml文件?

时间:2018-01-06 16:47:55

标签: c# wpf visual-studio xaml

我有很多来自Visual Studio Image Library的XAML文件。以下是其中一个的内容 - Add_16xMD.xaml

<!-- This file was generated by the AiToXaml tool.-->
<!-- Tool Version: 14.0.22307.0 -->
<Viewbox Width="16" Height="16" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
  <Rectangle Width="16" Height="16">
    <Rectangle.Fill>
      <DrawingBrush>
        <DrawingBrush.Drawing>
          <DrawingGroup>
            <DrawingGroup.Children>
              <GeometryDrawing Brush="#00FFFFFF" Geometry="F1M16,16L0,16 0,0 16,0z" />
              <GeometryDrawing Brush="#FFF6F6F6" Geometry="F1M10,7L14,7 14,10 10,10 10,14 7,14 7,10 3,10 3,7 7,7 7,3 10,3z" />
              <GeometryDrawing Brush="#FF388A34" Geometry="F1M13,8L9,8 9,4 8,4 8,8 4,8 4,9 8,9 8,13 9,13 9,9 13,9z" />
            </DrawingGroup.Children>
          </DrawingGroup>
        </DrawingBrush.Drawing>
      </DrawingBrush>
    </Rectangle.Fill>
  </Rectangle>
</Viewbox>

我希望将它包含在我的WPF项目中并在我的应用程序中使用。我不想复制粘贴代码,我不想修改这些用ResourceDictionary包装它们的文件。

有什么办法可以实现这个目标吗?

2 个答案:

答案 0 :(得分:0)

只需在应用中将它们包含为简单文件资源即可。然后你可以简单地通过XamlReader实例传递它们,这个实例将为你提供根项目的实例(在本例中为ViewBox)。从那里,无论你想做什么,都可以做到。

https://blogs.msdn.microsoft.com/ashish/2007/08/14/dynamically-loading-xaml

简而言之,这样做......

StreamReader mysr = new StreamReader("SomeFile.xaml");
ViewBox myLoadedViewBox = XamlReader.Load(mysr.BaseStream) as ViewBox;

答案 1 :(得分:0)

您可以做的另一件事是添加一个资源字典,然后添加对您感兴趣的文件的引用。换句话说,您没有打开每个文件并将其包装起来,您和#39 ;重新创建一个资源字典,引用您感兴趣的所有资源文件。

<ResourceDictionary>
    [Ref to file 1.xaml]
    [Ref to file 2.xaml]
    [Ref to file 3.xaml]
</ResourceDictionary>

我没有方便的语法,但这应该很容易找到,因为引用一直在使用。