使用WPF时,我注意到将控件添加到XAML文件中时会调用默认构造函数。
是否有一种方法可以调用参数化构造函数?
.NET 4.0引入了一项新功能,挑战了这个答案 - 但显然仅适用于UWP应用程序(而不是WPF)。
<object ...>
<x:Arguments>
oneOrMoreObjectElements
</x:Arguments>
</object>
x
命名空间定义的是什么? - jpmc26是的,你可以通过ObjectDataProvider
来实现。它允许您调用非默认构造函数,例如:
是的,你可以通过 ObjectDataProvider
来实现。它允许你调用非默认构造函数,例如:
<Grid>
<Grid.Resources>
<ObjectDataProvider x:Key="myDataSource"
ObjectType="{x:Type local:Person}">
<ObjectDataProvider.ConstructorParameters>
<system:String>Joe</system:String>
</ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider>
</Grid.Resources>
<Label Content="{Binding Source={StaticResource myDataSource}, Path=Name}"></Label>
</Grid>
假设Person是public class Person
{
public Person(string Name)
{
this.Name = Name;
}
public string Name { get; set; }
}
很遗憾,你不能绑定ConstructorParameters
。 在这里可以看到一些解决方法here。