3

IMul​​tiValueConverter を介してコマンドに (コマンド パラメーターとして) いくつかの値を渡そうとしています。値がコンバーターを通過するときは正しいのですが、Can_Execute() および Execute() コマンドが呼び出されると、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>

IMul​​tiValueConverter クラス:

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

MultiBinding とコンバーターを使用していないときは、コードは問題なく機能しましたが、コマンドに追加情報を渡すことができるように、MultiBinding が必要です。

4

1 に答える 1

6

コンバーターから値だけでなく Values.Clone() を返すと問題が解決するようですが、それが最善の方法かどうかはわかりません...

于 2011-01-05T17:23:46.573 に答える