2011-10-01 23 views
7

He enviado múltiples parámetros desde mi Comando de casilla de verificación. He usado un convertidor. El código está abajo. Si pongo un depurador y ver los valores aquí son mis resultados:Por qué este multibinding no funciona

Cuando cheque casilla de verificación está marcada o bien unchekcked:

En el convertidor tiene teh valores (matriz del objeto y elemento boolean). Pero cuando llego a mi método, el valor es un objeto [2], pero ambos valores son nulos

CheckBox XAML

<CheckBox x:Name="checkBox" 
       Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content.Data.Label}" 
       ClickMode="Release" 
       Command="{Binding Path=DataContext.SelectUnSelect}"> 
     <CheckBox.CommandParameter> 
      <MultiBinding Converter="{StaticResource SelectedItemConverter}"> 
       <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Content.Data"/> 
       <Binding RelativeSource="{RelativeSource Self}" Path="IsChecked"/> 
      </MultiBinding> 
     </CheckBox.CommandParameter> 

convertidor:

public class CheckConverter : IMultiValueConverter 
{ 
    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return values; 
    } 

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

Ver el código de comando del modelo:

public ICommand SelectUnSelect 
    { 
     get { return new RelayCommand<object>(parm => this.SelectAndUnSelect(parm));} 
    } 

Si pongo un depurador en el método SelectAndUnSelect, me muestra el objeto [2] en parm, pero ambos son nulos.

Observación: Si enlace mi parámetro de comando a cualquiera de los enlaces, funciona bien.

¿Qué es lo que falta aquí?

  • Shankar

Respuesta

5

que he tenido el mismo problema antes, si no recuerdo mal luego regresar values.ToList() en lugar de sólo values debe fijarlo

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
{ 
    return values.ToList(); 
} 
+1

que funcionó. No estoy seguro de por qué no estaba funcionando antes. – Shankar

+0

Funciona para mí también. Me interesaría saber por qué solo funciona de esa manera, y no devolviendo la matriz de objetos. – csteinmueller

Cuestiones relacionadas