在 Microsoft.Toolkit.MVVM 下使用命令绑定的最佳方式是什么

What the best way to use command binding under Microsoft.Toolkit.MVVM

我在 doc 中使用 Microsoft.Toolkit.MVVM 我们可以使用绑定 Button 命令,例如:

<Button
    Content="Click me!"
    Command="{Binding ButtonClickCommand}"/>

但是对于 ListView,我必须像 Behaviors 这样写,这段代码太长了:

<ListView>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectionChanged">
            <i:InvokeCommandAction Command="{Binding SelectionChangedCommand}" PassEventArgsToCommand="True"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</ListView>

那么为什么不能使用下面的代码呢?这很简单,但不起作用。

<ListView SelectionChanged={Binding SelectionChangedCommand}/>

简单的答案是对象的类型 在按钮 Command 中是 ICommand 并且在 ListView 中 SelectionChanged 是一个事件而不是 ICommand ,这就是为什么你需要使用 eventTrigger 这是一个“插件”

如果你从 MVVM 的角度来看,按钮在这里绑定一个命令,ListView 有 SelectedItems 集合,你可以绑定到它而不是事件,但这是你需要做出的更多选择(我认为一旦你习惯了你的代码看起来很好)