I valori IMultiValueConverter vanno bene, ma CommandParameter è nullo
-
25-09-2019 - |
Domanda
Sto cercando di passare più valori attraverso un IMultiValueConverter a un comando (come il parametro di comando). I valori sono corretti quando vanno attraverso il convertitore, ma una volta che il Can_Execute () ed esecuzione () comands vengono chiamati, ottengo un array di oggetti nulli. Tutte le idee?
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>
class IMultiValueConverter:
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 ();
}
}
Il codice ha funzionato bene quando non stavo usando un MultiBinding e convertitore, ma ho bisogno del MultiBinding in modo da poter passare qualche informazione in più al comando.
Soluzione
Tornando Values.Clone () invece di soli valori del convertitore sembra risolvere il problema, ma non sono sicuro se questa è la cosa migliore da fare ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow