我有多个包含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原则。
答案 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加载和分配属性。