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.

È stato utile?

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
scroll top