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

StackOverflow https://stackoverflow.com/questions/3504332

  •  29-09-2019
  •  | 
  •  

Вопрос

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

Мне нравится делать это в Xaml-Markup:

<Button Command="CommandGetsCalled" CommandParameter="-this?-" />
Это было полезно?

Решение

Есть два способа, которые я могу думать сделать это: дайте окно имя (через x:Name атрибут на то Window Tag, а затем построить привязку, подобное это (предполагает имя окна «ThisWindow»):

<Button Command="CommandGetsCalled" CommandParameter="{Binding ElementName=ThisWindow}" />

Для чего -то более общего (не полагается на то, чтобы дать текущему окну имя), привязка может быть построена таким образом:

<Button Command="CommandGetsCalled" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" /> 

Другие советы

Вы можете попробовать привязанность к родственникам

Если вы хотите пройти кнопку в качестве параметра:

<Button Command="CommandGetsCalled" 
        CommandParameter="{Binding RelativeSource={RelativeSource Self}}" />

Если вы хотите передать окно в качестве параметра:

<Button Command="CommandGetsCalled" 
        CommandParameter="{Binding RelativeSource={
             RelativeSource AncestorType={x:Type Window}}}" />

В моей ситуации ни один из предоставленных ответов не работал.

Это работало для меня:

<window x:Name="myWindow">
 <Button Command="Command" CommandParameter={x:Reference Name=myWindow}/>
</window>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top