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 的意义上)。而是Binding
is 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 绑定到自身的主要内容,如果未能解决你的问题,请参考以下文章