1

MVVMLightEventToCommand可以很容易地用于在您的视图模型上触发ICommand

<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事件属于DataGrid,并且Interaction.Triggersxaml 直接嵌套在 内部DataGrid

当事件是 a (每行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

(仅供参考:我正在做的是我在网格上方有一个面板,它显示鼠标在单击之前所在行的详细信息 - 这会触发详细视图)。

4

1 回答 1

2

是的,您可以通过创建自己的自定义behaviour class并在 xaml 文件中使用它来直接绑定到 ViewModel 中的命令。这些链接可能会让您入门 -使用交互进行绑定和通过 MVVM中的交互进行绑定

于 2012-07-22T10:47:35.953 回答