1

MVVMLightEventToCommandを使用しICommandて、viewmodel を非常に簡単に起動できます。

<DataGrid>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectionChanged">
            <GalaSoft_MvvmLight_Command:EventToCommand
                Command="{Binding ProductSelectionChangedCommand, Mode=OneWay}    "
                CommandParameter="{Binding SelectedItems, ElementName=gridProducts}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</DataGrid>

この例では、SelectionChangedイベントは に属しDataGridInteraction.Triggersxaml は の中に直接ネストされていDataGridます。

イベントが(各行DataGridRowに独自のイベントがある)の場合、同じことを行う方法がわかりません。

私はこれを行うことができましたが、回避したいハンドラー関数が含まれています:

<DataGrid>
    <DataGrid.ItemContainerStyle>
        <Style TargetType="DataGridRow">
            <EventSetter Event="DataGridRow.MouseEnter" 
                         Handler="Row_MouseEnter"/>
        </Style>
    </DataGrid.ItemContainerStyle>
</DataGrid>

Row_MouseEnterイベント(私の.xaml.csファイル上)では、ViewModelで「コマンドを見つけて」プログラムでトリガーします。

同じことを直接行う方法があるかどうかを本当に知りたいですInteraction.Triggers

(FYI: 私がやっていることは、グリッドの上に、クリックする前にマウスが置かれている行の詳細を表示するパネルがあることです。これにより、詳細ビューがトリガーされます)。

4

1 に答える 1

2

behaviour classええ、独自のカスタムを作成して xaml ファイルで使用することにより、ViewModel のコマンドに直接バインドできます。これらのリンクから始めることができます -インタラクティブ機能を使用したバインディングおよびMVVM での相互作用によるバインディング

于 2012-07-22T10:47:35.953 に答える