c# - 从代码绑定(bind) Setter.Value

标签 c# wpf binding code-behind setter

在 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/

相关文章:

silverlight - 使用转换器时重新绑定(bind)图像源?

java - spring-mvc中抽象类的数据绑定(bind)

C# WPF 线程监控(如果所有创建的线程都已结束)

c# - Visual C# 2010 Express 在调试后保留文件句柄

c# - 列表框的Scrollviewer根据项目数可见

c# - 删除 WPF FlowDocument 左填充?

C# 对象失去它的引用并变为空

c# - c#中密码保护的zip文件

wpf - 我可以在 Xaml 中指定 DataGrid 项目的类型吗?

c# - 将对象绑定(bind)到组合框会填充列表,但选择更改不会在 CSharp 中的对象中更新