在 XAML 中我可以这样写:
<Setter Property="PropertyName" Value="{Binding ...}" />
我如何在代码中执行此操作?我以前在代码中构建过绑定(bind),但我似乎无法在 Setter
类上找到任何静态 ValueProperty
对象以传递给 BindingOperations.SetBinding()
。
最佳答案
在 Setter 上设置绑定(bind)时,您根本不需要 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,因此它不能被绑定(bind)。因此,当您在其中存储 Binding 对象时,XAML 或代码中没有歧义。
当 Setter 实际应用于对象时,如果在 Setter 中找到 Binding,则调用 BindingOperations.SetBinding 的等效项。否则直接设置该属性。
关于c# - 从代码绑定(bind) Setter.Value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3030679/