C#学习教程:将XamlReader用于不带默认构造函数的控件我正在使用XamlReader.Parse函数来执行此操作。对于一个简单的控件,比如Button,使用不带参数的默认构造函数,这工作正常:varbuttonStr="Text";varbutton=(Button)XamlReader.Parse(buttonStr);但是,当我尝试对例如Stroke控件执行此操作时,它会失败。先试试简单的空笔划:varstrokeStr="";varstroke=(Stroke)XamlReader.Parse(strokeStr);这给出了错误:无法创建“System.Windows.Ink.Stroke”类型的对象。CreateInstance失败,可能是因为“System.Windows.Ink.Stroke”没有公共默认构造函数。在Stroke的定义中,我发现它至少需要构造一个StylusPointsCollection。我假设这就是错误告诉我的内容,尽管在某种程度上假设这将由XamlReader处理。尝试使用StylusPoints转换XamlofStroke会产生相同的错误:varstrokeStr=""+""+""+""+""+"";varstroke=(Stroke)XamlReader.Parse(strokeStr);我做错了什么?我如何告诉XamlReader如何正确创建笔划?它是声明性的XAML语言的一个“功能”,对构造函数一无所知。人们使用XAML中的ObjectDataProvider来“翻译”和包装没有无参数构造函数的类的实例(它对于数据绑定也很有用)。在您的情况下,XAML应如下所示:代码应为:varstroke=(Stroke)((ObjectDataProvider)XamlReader.Parse(xamlStr)).Data;HTH。以上就是《C#学习教程:无默认构造函数的控件使用XamlReader》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
