web-dev-qa-db-ja.com

WPF自身にバインド

WPF Windowがあり、どこかにList<string>をバインドするListViewがあります。

今、私のListViewのどこかにTextBoxがあり、Contentプロパティが{Binding}に設定されています。

しかし、これは速記です。自分自身にバインドするための完全なバインディングを作成するにはどうすればよいですか?

{Binding Path=Self}は機能せず、{Binding Self}も機能しません(後者は前者のショートカットです)。

77
Snake

短い答え{Binding}not「自身へのバインド」のショートカットです( RelativeSource.Self の意味)。むしろ、{Binding}と同等{Binding Path=.}、現在のソースにバインドします。


詳しく説明する:バインディングには、sourcepathがあります。たとえば、次のものを使用して、「自分自身にバインド」することができます。

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

ただし、これはsourceをコントロール自体に設定するため、UIコントロールのプロパティxにアクセスしようとします(現在のプロパティxではなく)データコンテキスト)。あなたの質問をどのように理解したかから、これはあなたが望むものではありません。特に、それは{Binding}が行うことではありません:{Binding}はソースをそのまま保持し(通常、親要素のDataContext)、ソース自体にバインドします(Path=.と同等)。

228
Heinzi