我有一个带参数化构造函数的IValueConverter
继承的类MyConverter
。
我如何从XAML调用此构造函数以在绑定中使用转换器?
虽然我可以从代码中做到这一点:
Student student = new Student() { Name = "Zhu" };
Binding binding = new Binding("Number")
{
Converter = new MyConverter(student),
Source = ...
};
一种简单且推荐的方法是使用属性元素语法。
MyConverter.cs
public class MyConverter : IValueConverter
{
public Student Student { get; set; }
public MyConverter()
{}
// IValueConverter implementation
}
Student.cs
public class Student
{
public string Name { get; set; }
}
MainWindow.cs
<Window>
<Window.Resources>
<MyConverter x:Key="MyConverter">
<MyConverter.Student>
<Student Name="Zhu" />
</MyConverter.Student>
</MyConverter>
</Window.Resources>
</Window>
[另一个通用选项是也可以使用ObjectDataProvider
作为绑定源,从而允许绑定到方法并使用参数化构造函数实例化类型。但是由于ObjectDataProvider
属性不是Binding.Converter
,因此您无法对其进行绑定,这会使DependecyProperty
在您的情况下无用(因为它只能用作绑定源)。