2011-10-01 9 views
7

Ho inviato più parametri dal mio comando Checkbox. Ho usato un convertitore. Il codice è sotto Se metto un debugger e vedere i valori qui sono i miei risultati:Perché questa multibinding non funziona

Quando controllo casella di controllo è sia selezionata o unchekcked:

Nel convertitore ha teh valori (Array dell'oggetto elemento e booleano). Ma quando vengo a mio metodo, il valore è un oggetto [2], ma entrambi i valori sono nulli

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> 

Converter:

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(); 
    } 
} 

Visualizza codice di comando modello:

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

Se metto un debugger nel metodo SelectAndUnSelect, mi mostra oggetto [2] in parm ma entrambi sono nulli.

Osservazione: Se si associa il mio parametro di comando a uno qualsiasi dei binding funziona correttamente.

Cosa mi manca qui?

  • Shankar

risposta

5

Ho avuto lo stesso problema prima, se non ricordo male poi tornare values.ToList() invece di values dovrebbe risolvere il problema

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

che ha funzionato. Non sono sicuro del motivo per cui non funzionava prima. – Shankar

+0

Funziona anche per me. Sarei interessato a sapere perché funziona solo in questo modo, e non restituendo l'array di oggetti. – csteinmueller

Problemi correlati