在窗口的XAML代码中使用XAML文件中的UIElement

时间:2018-01-09 11:28:51

标签: c# .net wpf xaml mvvm

我有多个包含UserControl的XAML文件(它们是转换为XAML的SVG图像)。在C#中,例如,要在Grid中使用该图像,我将使用XamlReader并将根元素添加到网格的子元素中。

StreamReader sr = new StreamReader("example.xaml");
UIElement rootElement = (UIElement) XamlReader.Load(sr.BaseStream);
theGrid.Children.Add(rootElement);

我怎样才能在XAML中做同样的事情(我会从绑定中使用图像XAML的路径)?

我正在寻找这种方法,以遵循将MV与代码分离的MVVM原则。

2 个答案:

答案 0 :(得分:1)

  

您也许可以通过返回XamlReader.Load结果的Binding Converter绑定ContentControl的Content属性。

Clemens建议的解决方案。

答案 1 :(得分:0)

WPF What is the correct way of using SVG files as icons in WPF

描述问题。 底线是有将SVG转换为xaml的工具。 谷歌有点你会找到很多工具。 该链接还有有用的信息。

SVG是一张图片,我也看不到与mvvm的链接。除非你的图像没有修复。根据您的问题,您似乎需要在另一个xaml中修复已转换的xaml。

我认为这是在目标xaml控件中复制粘贴相关部分的问题。这有一点开销。

如果图像未修复,则加载字符串以填充路径。这将由mvvm在一个视图模型中绑定,该视图模型使用inotifypropertychanged加载和分配属性。