2011-04-13 18 views
8

Tengo una casilla de verificación que activa un comando usando WPF/MVVM. Esto funciona bien, pero quiero usar la propiedad IsChecked de la casilla de verificación como un parámetro de comando . Intenté esto.cómo usar isChecked como un parámetro de comando en el mismo comando de casillas de verificación

<CheckBox Margin="3" Content="Clear Selected OEM" 
           Command="{Binding Path=ClearOemCommand}" 
           CommandParameter="{Binding Path=IsChecked}"/> 

Bu me sale un error en la ventana de salida que dice

System.Windows.Data Error: 40 : BindingExpression path error: 'IsChecked' property not found on 'object' 

sabría cómo utilizar encontrar ancestro si quería utilizar la propiedad de otro control, pero estoy confundido aquí - es probablemente sea más fácil de lo que creo ... Simplemente no hacer la conexión en mi mente.

Gracias!

+4

CommandParameter = "{Binding Path = IsChecked RelativeSource = Auto} – Arseny

+0

que debería hacer que una respuesta Arsenio para que pueda ser upvoted y buscó más fácil – BlackICE

+0

http: //www.wpfwiki.com/WPF%20Q5.3.ashx – BlackICE

Respuesta

28

Por favor, añadir RelativeSource Auto en CommandParameter

<CheckBox Margin="3" Content="Clear Selected OEM" 
    Command="{Binding Path=ClearOemCommand}" 
    CommandParameter="{Binding Path=IsChecked, RelativeSource={RelativeSource Self}}" /> 
+0

Te perdiste una coma :) –

+0

@Dan gracias! – Arseny

+0

¿Es posible configurar de la misma manera el estado Sin Revisar del CheckBox? Si hago el el mismo compilador dice que no puede establecer Com mandParameter más de una vez. – Sturm

1

En lugar de crear comandos en CheckBox puede enlazar IsChecked con una propiedad CLR y llevar a cabo su lógica de comando en la moda de la propiedad CLR. Esta es otra solución de entrega del comportamiento del comando.

3

Si se encuentra con la siguiente excepción, como lo hice ...

conjunto de propiedades System.Windows.Data.Binding.RelativeSource inició una excepción

Tal vez puedas probar:

CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=IsChecked}" 
2

Sí JW1 es correcta. Puede utilizar el nombre elemen también como éste, que también funcionaría

"{Binding Path=IsChecked,ElementName=chkAll}" 
Cuestiones relacionadas