XAML定义如何变成对象实例?
时间:2020-03-06 14:31:59 来源:igfitidea点击:
XAML允许我们使用包含花括号的字符串来指定属性值。这是一个创建Binding实例并将其分配给TextBox元素的Text属性的示例。
<TextBox Text="{Binding ElementName=Foo, Path=Bar}"/>
我想扩展XAML,以便开发人员可以将此输入为有效...
<TextBox Text="{MyCustomObject Field1=Foo, Field2=Bar}"/>
这将创建我的类的实例,并适当设置Field1 / Field2属性。这可能吗?如果是这样,我们该怎么做?
如果可能的话,我有一个后续问题。我可以接受字符串" {Binding ElementName = Foo,Path = Bar}",并要求框架对其进行处理并返回其指定的Binding实例吗?必须已经在某个地方完成了上述XAML的工作,因此必须有一种方法来请求处理同一件事。
解决方案
看看markupextensions
http://blogs.msdn.com/wpfsdk/archive/2007/03/22/blogpost-text-creatingasimplecustommarkupextension.aspx
Binding类是标记扩展。我们可以派生自System.Windows.Markup.MarkupExtension。
ElementName和Path只是Binding对象的属性。
至于后续操作,我们可以通过实例化Binding对象在代码中创建一个新的Binding。我不知道一种处理字符串的方法。