Подтвердить что ты не робот

Передача текущего окна в качестве параметра CommandParameter

как я могу передать окно, в котором я сейчас включен как параметр для команды?

Мне нравится делать это в разметке XAML:

<Button Command="CommandGetsCalled" CommandParameter="-this?-" />
4b9b3361

Ответ 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>