【问题标题】:What the best way to use command binding under Microsoft.Toolkit.MVVM在 Microsoft.Toolkit.MVVM 下使用命令绑定的最佳方法是什么
【发布时间】:2022-01-13 05:49:38
【问题描述】:

我在 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 类型,但SelectionChanged 属性应与事件处理程序匹配。

标签: c# wpf xaml mvvm binding


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2010-12-25
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多