Wpf 从XAML调用参数化构造函数
在使用WPF时,我注意到当我向XAML文件添加控件时,会调用默认构造函数Wpf 从XAML调用参数化构造函数,wpf,xaml,Wpf,Xaml,在使用WPF时,我注意到当我向XAML文件添加控件时,会调用默认构造函数 有没有一种方法可以调用参数化构造函数?没有。不是从XAML[使用WPF时]。.NET 4.0带来了一个挑战答案的新特性-但显然只适用于UWP应用程序(而不是WPF) 一个或多个对象元素 XAML友好对象的指导原则之一是,它们应该完全可用于默认构造函数,也就是说,没有只有在使用非默认构造函数时才可访问的行为。为了适应XAML的声明性质,对象参数通过属性设置器指定。还有一种约定是,在XAML中设置属性的顺序应该不重要 然而
有没有一种方法可以调用参数化构造函数?没有。不是从XAML[使用WPF时]。.NET 4.0带来了一个挑战答案的新特性-但显然只适用于UWP应用程序(而不是WPF)
一个或多个对象元素
XAML友好对象的指导原则之一是,它们应该完全可用于默认构造函数,也就是说,没有只有在使用非默认构造函数时才可访问的行为。为了适应XAML的声明性质,对象参数通过属性设置器指定。还有一种约定是,在XAML中设置属性的顺序应该不重要
然而,您可能有一些对您的实施很重要但与约定不符的特殊考虑:
StreamSource
和UriSource
是没有意义的ISupportInitialize
界面。当从XAML读取和创建对象(即解析)时,将专门处理实现ISupportInitialize
的对象:
BeginInit()
EndInit()
BeginInit()
和EndInit()
的调用,您可以处理需要施加的任何规则,包括设置某些属性的要求。这是处理创建参数的方式;不需要构造函数参数
请注意,还提供了
ISupportInitializeNotification
,它通过添加IsInitialized
属性和Initialized
事件扩展了上述接口。我建议使用扩展版本。是的,您可以通过ObjectDataProvider
来完成。它允许您调用非默认构造函数,例如:
乔
假设那个人是
公共类人物
{
公众人物(字符串名称)
{
this.Name=Name;
}
公共字符串名称{get;set;}
}
不幸的是,您无法绑定
构造函数参数
。查看一些解决方法。很好,我很高兴你提出了这个问题。对于来这里寻找确切答案的任何人,我将为你节省一些时间,因为你将在下一篇文章中找到:“基本上没有当前的编译器(WPF、SL、WinRT)真正支持它”-Duncan Matheson。由Kevek的评论链接的,应该在答案中。定义的x
名称空间是什么?不幸的是,此语法适用于XAML 2009版本,意味着通用应用程序,在WPF中不起作用。请看我的问题
<object ...>
<x:Arguments>
oneOrMoreObjectElements
</x:Arguments>
</object>