Передача текущего окна в качестве параметра CommandParameter
как я могу передать окно, в котором я сейчас включен как параметр для команды?
Мне нравится делать это в разметке XAML:
<Button Command="CommandGetsCalled" CommandParameter="-this?-" />
Ответы
Ответ 1
Я могу подумать об этом двумя способами: Дайте окну имя (через атрибут x:Name
в теге Window
, а затем создайте привязку как это (предполагает, что имя окна равно ' ThisWindow '):
<Button Command="CommandGetsCalled" CommandParameter="{Binding ElementName=ThisWindow}" />
Для чего-то более общего (не полагаясь на то, что текущее окно является именем), привязка может быть построена следующим образом:
<Button Command="CommandGetsCalled" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" />
Ответ 2
Вы можете попробовать привязать к RelativeSource
Если вы хотите передать кнопку в качестве параметра:
<Button Command="CommandGetsCalled"
CommandParameter="{Binding RelativeSource={RelativeSource Self}}" />
Если вы хотите передать окно в качестве параметра:
<Button Command="CommandGetsCalled"
CommandParameter="{Binding RelativeSource={
RelativeSource AncestorType={x:Type Window}}}" />
Ответ 3
В моей ситуации ни один из предоставленных ответов не работал.
Это сработало для меня:
<window x:Name="myWindow">
<Button Command="Command" CommandParameter={x:Reference Name=myWindow}/>
</window>