将绑定名称作为参数传递

本文关键字:参数传递 定名称 绑定 | 更新日期: 2023-09-27 18:09:36

在WPF中,是否可以将绑定的名称/路径作为参数传递?例如,假设我有这个:

<TextBox Width="300" Text="{Binding Path=Age, UpdateSourceTrigger=PropertyChanged, ValidatesOnNotifyDataErrors=True, NotifyOnValidationError=True, Converter={x:Static local:AgeConverter.Instance}, ConverterParameter={Binding ???}}" />

是否有什么我可以代替???,使参数值是"年龄"?

将绑定名称作为参数传递

正如@Alessandro提到的,ConverterParameter不是DependencyProperty,所以它不支持数据绑定。

但是由于ConverterParameterBinding类的常规属性,所以您可以通过编程设置它的值。您可以在代码中这样做:

var myTextBox = new TextBox();
Binding myBinding = new Binding("Age");
myBinding.ConverterParameter = "set this to anything you want";
myTextBox.SetBinding(TextBlock.TextProperty, myBinding);

例如,您可以稍后在事件处理程序中更改ConverterParameter的值,以响应用户输入。下次更新绑定时,它将使用新的ConverterParameter调用Converter

private void Button_Click(object sender, RoutedEventArgs e)
{
    myBinding.ConverterParameter = "a different converter parameter";
}