Передача текущего окна в качестве командного параметра
-
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>
Не связан с StackOverflow