Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 通过绑定显示保存的Xaml画布_Wpf_Vb.net_Xaml_Svg_Binding - Fatal编程技术网

Wpf 通过绑定显示保存的Xaml画布

Wpf 通过绑定显示保存的Xaml画布,wpf,vb.net,xaml,svg,binding,Wpf,Vb.net,Xaml,Svg,Binding,我正在将svg图像保存为数据库中的xaml字符串。接下来,我将这个xaml字符串记录在一个类的属性(MyClass.XamlString)中 在我的表单上有一个画布,我希望MyClass.XamlString是画布的子级 这就是我所拥有的: Dim MyBinding As New Binding("XamlString") MyBinding.Source = MyClass MyBinding.Converter = New clsXamlTo

我正在将svg图像保存为数据库中的xaml字符串。接下来,我将这个xaml字符串记录在一个类的属性(MyClass.XamlString)中

在我的表单上有一个画布,我希望MyClass.XamlString是画布的子级

这就是我所拥有的:

        Dim MyBinding As New Binding("XamlString")
        MyBinding.Source = MyClass
        MyBinding.Converter = New clsXamlToCanvasConverter
        CanvasOnForm.SetBinding(ContentPresenter.ContentProperty, MyBinding) 

Friend类clsXamlToCanvasConverter
实现IValueConverter
公共函数Convert(值作为对象,targetType作为类型,参数作为对象,区域性作为全球化.CultureInfo)作为对象实现IValueConverter.Convert
Dim ConvertedCanvas As Canvas=System.Windows.Markup.XamlReader.Parse(“&value&”)
返回转换画布
端函数
作为对象的公共函数ConvertBack(值作为对象,targetType作为类型,参数作为对象,区域性作为全球化.CultureInfo)实现了IValueConverter.ConvertBack
抛出新的NotImplementedException
端函数
末级
在调试过程中,我看到clsXamlToCanvasConverter创建了一个画布,其中包含来自xaml字符串的子项,虽然您可能会说额外的画布是多余的,但它工作正常

我猜这就是我出错的地方:CanvasInform.SetBinding(ContentPresenter.ContentProperty,MyBinding)

代码运行正常,问题是我没有看到显示的图像

我在这方面搜索了很多,也看过这篇文章,但显然这对我没有帮助


有什么想法吗?

如果
canvasconform
实际上是一个画布,绑定将无法工作,因为画布没有内容属性。您可以改用ContentControl或ContentPresenter。谢谢,这就解决了问题。如果您输入答案,我可以将其标记为正确答案。
Friend Class clsXamlToCanvasConverter
Implements IValueConverter

Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.Convert
    Dim ConvertedCanvas As Canvas = System.Windows.Markup.XamlReader.Parse("<Canvas xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"">" & value & "</Canvas>")
    Return ConvertedCanvas
End Function

Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
    Throw New NotImplementedException
End Function
End Class