pasando la ventana actual como un CommandParameter
-
29-09-2019 - |
Pregunta
¿cómo puedo pasar a la ventana Actualmente estoy en como un parámetro para un comando?
Me gusta hacer esto en XAML-marcado:
<Button Command="CommandGetsCalled" CommandParameter="-this?-" />
Solución
Hay dos maneras en que puedo de pensar que hacer esto: Dar la ventana de un nombre (a través de un atributo x:Name
en la etiqueta Window
, y luego construir un enlace como este (asume el nombre de la ventana es 'ThisWindow'):
<Button Command="CommandGetsCalled" CommandParameter="{Binding ElementName=ThisWindow}" />
Para algo más general (no se basa en dar a la ventana actual un nombre), la unión se puede construir de esta manera:
<Button Command="CommandGetsCalled" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" />
Otros consejos
Usted podría intentar unirse a una RelativeSource
Si desea pasar el botón como un parámetro:
<Button Command="CommandGetsCalled"
CommandParameter="{Binding RelativeSource={RelativeSource Self}}" />
Si desea pasar la ventana como un parámetro:
<Button Command="CommandGetsCalled"
CommandParameter="{Binding RelativeSource={
RelativeSource AncestorType={x:Type Window}}}" />
En mi situación ninguna de las respuestas proporcionadas trabajó.
Esto funcionó para mí:
<window x:Name="myWindow">
<Button Command="Command" CommandParameter={x:Reference Name=myWindow}/>
</window>