У меня есть WPF Window
, и где-то есть место, к ListView
которому я привязываю List<string>
.
Теперь где-то в моем ListView
есть TextBox
и Content
свойство установлено на {Binding}
.
Но это стенография. Как мне написать полную привязку для привязки к самой себе?
{Binding Path=Self}
не работает, и тоже {Binding Self}
(где последнее является ярлыком для первого).
wpf
data-binding
binding
self
Змея
источник
источник
Ответы:
Краткий ответ :
{Binding}
это не ярлык для «привязки к самому себе» (в смысле RelativeSource.Self ). Скорее,{Binding}
это эквивалент{Binding Path=.}
, который привязывается к текущему источнику.Чтобы уточнить : привязка имеет источник и путь . Вы можете выполнить «привязку к самому себе», например, используя
<myUIControl myProperty="{Binding RelativeSource={RelativeSource Self}, Path=x}" />
Это, однако, устанавливает источник для самого
x
элемента управления, поэтому он будет пытаться получить доступ к свойству элемента управления пользовательского интерфейса (а не к свойствуx
текущего контекста данных). Насколько я понял ваш вопрос, это не то, что вам нужно; в частности, это не то, что{Binding}
делает:{Binding}
сохраняет исходный код таким, какой он есть (обычно этоDataContext
какой-то родительский элемент), и привязывается к самому источнику (эквивалентноPath=.
).источник
CommandParameter="{Binding ElementName=MyDataGrid, Path=SelectedItems}"
он передает SelectedItems в Bound ICommand. Однакоnull
передается, если к нему обращаются через ContextMenu. Я пробовалCommandParameter=
"{Binding SelectedItems}",
"{Binding ElementName = MyDataGrid, Path = SelectedItems}" и"{Binding RelativeSource={RelativeSource Self}, Path=SelectedItems}"
.