C# 绑定设置程序。来自代码的值

C# 绑定设置程序。来自代码的值,c#,wpf,binding,code-behind,setter,C#,Wpf,Binding,Code Behind,Setter,在XAML中,我可以编写如下内容: <Setter Property="PropertyName" Value="{Binding ...}" /> 我将如何在代码中执行此操作?我以前在代码中构造过绑定,但在Setter类中似乎找不到任何静态ValueProperty对象来传递给BindingOperations.SetBinding()在Setter上设置绑定时,您根本不需要BindingOperations。您需要做的只是: var setter = new Setter(

在XAML中,我可以编写如下内容:

<Setter Property="PropertyName" Value="{Binding ...}" />


我将如何在代码中执行此操作?我以前在代码中构造过绑定,但在
Setter
类中似乎找不到任何静态
ValueProperty
对象来传递给
BindingOperations.SetBinding()

在Setter上设置绑定时,您根本不需要BindingOperations。您需要做的只是:

var setter = new Setter(TextBlock.TextProperty, new Binding("FirstName"));
或同等地

var setter = new Setter
{
  Property = TextBlock.TextProperty,
  Value = new Binding("FirstName"),
};
其中任何一个都相当于

<Setter Property="TextBlock.Text" Value="{Binding FirstName}" />

之所以这样做,是因为Setter.Value是一个普通的CLR属性,而不是DependencyProperty,因此它不能被绑定。因此,当您在XAML或代码中存储绑定对象时,XAML或代码中都没有歧义


当Setter实际应用于对象时,如果在Setter中找到绑定,则调用BindingOperations.SetBinding的等效项。否则将直接设置属性。

Ah,谢谢您的清理。对我来说,Setter中没有ValueProperty似乎很奇怪,但我从未想过只将值设置为绑定对象。:)干杯,雷,你最近帮了我很多忙