WPF 绑定到自身

Posted

技术标签:

【中文标题】WPF 绑定到自身【英文标题】:WPF Bind to itself 【发布时间】:2010-12-26 18:26:42 【问题描述】:

我有一个 WPF Window,在某处有一个 ListView,我将一个 List<string> 绑定到。

现在在我的ListView 的某个地方有一个TextBox 并且Content 属性设置为Binding

但这是简写。如何编写完整的绑定以绑定到自身?

Binding Path=Self 不起作用,Binding Self 也不起作用(后者是前者的快捷方式)。

【问题讨论】:

我想提一下与这个主题相关的帖子。上面的答案是完全正确的,但是有一点可以完成上面的答案。这是link。 【参考方案1】:

简答Binding 不是“绑定到自身”的快捷方式(在RelativeSource.Self 的意义上)。而是Bindingis equivalent toBinding Path=.,它绑定到当前源。


详细说明:绑定有一个和一个路径。您可以“绑定到自身”,例如,使用

<myUIControl myProperty="Binding RelativeSource=RelativeSource Self, Path=x" />

然而,这会将 source 设置为控件本身,因此它将尝试访问 UI 控件的属性 x(而不是当前数据上下文的属性 x)。根据我对您问题的理解,这不是您想要的;特别是,Binding 不是这样做的:Binding 将源保持原样(通常是某些父元素的DataContext)并绑定到源本身(相当于Path=.)。

【讨论】:

我有一个 DataGrid,如果用户通过其 CommandParameter="Binding ElementName=MyDataGrid, Path=SelectedItems" 的 InputBinding 的 KeyBinding 访问其 ContextMenu 的 MenuItem 的命令之一,它会将 SelectedItems 传递给绑定的 ICommand。但是,如果通过 ContextMenu 访问 null,则会传递它。我试过CommandParameter= "Binding SelectedItems", "Binding ElementName=MyDataGrid, Path=SelectedItems"` 和"Binding RelativeSource=RelativeSource Self, Path=SelectedItems" @Tom:这很难在评论中回答。请创建一个新问题并提供minimal reproducible example。

以上是关于WPF 绑定到自身的主要内容,如果未能解决你的问题,请参考以下文章

wpf的命令怎么绑定多个条件

Winform 绑定ListView控件

使用多重绑定设置c#wpf组合框背景颜色[关闭]

为啥 WPF 支持绑定到对象的属性,但不支持绑定字段?

WPF学习第三十章 元素绑定——绑定到非元素对象

为啥 WPF 绑定在绑定到元素本身的标签时不起作用