2011-01-05 11 views
3

Ich versuche, mehrere Werte über einen IMultiValueConverter an einen Befehl übergeben (als der Befehlsparameter). Die Werte sind korrekt, wenn sie den Konverter durchlaufen, aber sobald die Befehle Can_Execute() und Execute() aufgerufen werden, erhalte ich ein Array von Null-Objekten. Irgendwelche Ideen?IMultiValueConverter Werte sind in Ordnung, aber CommandParameter ist null

XAML:

<Button Content="+" HorizontalAlignment="Right" VerticalAlignment="Top" Width="23" Height="23" Margin="0,0,0,0"> 
     <Button.CommandParameter> 
      <MultiBinding Converter="{StaticResource Converter_MultipleValues}"> 
       <Binding/> 
      </MultiBinding> 
     </Button.CommandParameter> 
     <Button.Command> 
      <Binding Path="Command_Add_Files" Source="{StaticResource Vm_FileList}"/> 
     </Button.Command> 
    </Button> 

IMultiValueConverter Klasse:

class cvt_multivalue : IMultiValueConverter { 
    public object Convert (object[] Values, Type Target_Type, object Parameter, CultureInfo culture) { 
     if (Target_Type != typeof (object)) throw new NotSupportedException(); 
     return Values; 
     } 

    public object [] ConvertBack (object Value, Type [] Target_Type, object Parameter, CultureInfo culture) { 
     throw new NotSupportedException(); 
     } 
    } 

Der Code ganz gut funktioniert, wenn ich nicht ein Multibinding und Konverter, aber ich brauche das Multibinding, so kann ich etwas mehr passieren Informationen zum Befehl.

Antwort

6

Rückgabewerte.Clone() statt nur Werte aus dem Konverter scheint das Problem zu beheben, aber ich bin mir nicht sicher, ob das das Beste ist, was zu tun ist ...