WPFはそれ自体にバインドします


86

WPFWindowがあり、どこかListViewにバインドする場所がありList<string>ます。

今、どこかで私ListViewがあるTextBoxContentプロパティがに設定されています{Binding}

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

{Binding Path=Self}動作しません。動作しません{Binding Self}(後者は前者のショートカットです)。


このトピックに関連する投稿に言及したいと思います。上記の回答は完全に正しいですが、上記の回答を完了するポイントがあります。ここにリンクがあります。
Ali Fattahian 2013年

回答:


247

簡単な答え:「それ自体にバインドする」ためのショートカットで{Binding}はありませんRelativeSource.Selfの意味で)。むしろ、現在のソースにバインドする、{Binding} と同等 {Binding Path=.}です。


詳述すると、バインディングにはソースパスがあります。たとえば、「それ自体へのバインド」を行うことができます。

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

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


ユーザーがInputBindingのKeyBindingを介してContextMenuのMenuItemのコマンドの1つにアクセスするとCommandParameter="{Binding ElementName=MyDataGrid, Path=SelectedItems}"、SelectedItemsがバインドされたICommandに渡されるDataGridがあります。ただし、nullContextMenuを介してアクセスした場合は渡されます。私が試したCommandParameter="{selectedItemsのバインディング}", と` "{selectedItemsの=、のElementName = MyDataGridパスのバインド}" "{Binding RelativeSource={RelativeSource Self}, Path=SelectedItems}"
トム

@トム:これはコメントで答えるのは難しいです。新しい質問を作成し、再現可能な最小限の例を提供してください。
ハインジ2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.