2012-09-13 29 views
10

Tengo un DataTemplate que representa los botones de AppBar que declaro mediante una colección de objetos de AppBarCommand personalizados.Enlace de un botón de WPF Parámetro de comando al botón en DataTemplate

public AppBarCommand(RelayCommand command, string buttonstyle) 
    { 
    Command = command; 
    ButtonStyle = buttonstyle; 
    } 

<DataTemplate> 
    <Button Command="{Binding Command}" 
      Style="{Binding ButtonStyle, Converter={StaticResource StringNameToStyleConverter}}"/> 
</DataTemplate> 

me gustaría añadir un CommandParameter vinculante, pero el parámetro tiene que ser el propio botón. Esto es para que pueda establecer el PlacementTarget de un flyout de Callisto. es posible?

+0

Probablemente más fácil de manejar el evento Click del botón. El primer argumento que recibirá en su controlador será el botón. – Jay

Respuesta

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

Su propiedad Command debe ser la versión genérica de la RelayCommand: RelayCommand<object> por ejemplo.

+0

¡Alguien más rápido que yo! +1 –

+0

no se puede compilar. – aaron

4

respuesta como Miklós Balogh dicho, o puede hacer:

<Button x:Name="MyButton" Command="{Binding Command}" CommandParameter={Binding ElementName=MyButton ... /> 
Cuestiones relacionadas