0

ICommand私は静的プロパティとして利用可能なカスタム実装を書きました:

public class GridViewCommands
{
    public GridViewCommands()
    {

    }

    /// <summary>
    /// Toggle Selection-Command
    /// </summary>
    public static ICommand ToggleSelection
    {
        get
        {
            return new GridViewToggleSelectionCommand();
        }
    }
}

このプロパティをシンプルにバインドしようとしましたButton-Command

<ui:GridViewControl x:Name="gridView" Grid.Row="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />

<Button HorizontalAlignment="Left" Width="100" Margin="220,0,0,0" Content="Toggle" x:Name="toggleButton" Command="{x:Static  ui:GridViewCommands.ToggleSelection}" CommandParameter="{Binding ElementName=gridView}"></Button>

しかし、アプリケーションを起動すると、メソッドのparameter-Parameterは常に null になります。私の目的は、のインスタンスをコマンド パラメーターとして渡すことです。CanExecuteGridViewToggleSelectionCommandGridViewControl

ここで何が間違っていますか: ui:GridViewCommands.ToggleSelection}" CommandParameter="{Binding ElementName=gridView"}?

編集

バインディングは例外をスローしません。

どうもありがとうございました!

4

2 に答える 2

0

私はあなたがこれをやろうとしていると思います:

public static ICommand ToggleSelection { get { return new RelayCommand<GridViewControl>(GridViewToggleSelectionCommand); } }
private static void GridViewToggleSelectionCommand(GridViewControl theControl)
{
    // do something with the control here
}

これを mvvm とタグ付けしたようです...これは mvvm ではありません。ビュー モデルは、ビューについて何も認識してはなりません。また、ToggleSelectionを静的に設定している理由を一生理解できません。これは、コマンドハンドラーも静的にする必要があることを意味します。

正直なところ、あなたがたどっている道を進み続けると、あなたは痛みの世界に身を置くことになります. GridViewControl はビュー モデル内のオブジェクトにバインドする必要があり、ICommand ハンドラーを介してビュー モデルに戻す必要があるのはこのオブジェクトです。

于 2015-08-12T22:54:01.820 に答える
0

ボタンをクリックすると、実際にパラメーターを取得できます。

于 2015-08-13T11:35:05.250 に答える