gpt4 book ai didi

Silverlight MVVM : where did my (object sender, RoutedEventArgs e) 去吗?

转载 作者:行者123 更新时间:2023-12-03 10:13:45 25 4
gpt4 key购买 nike

我在我的 View 模型中使用命令来处理事件。例如,我正在处理这样的按钮单击事件:

XAML

            <i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding mvvmButtonclick}" />

</i:EventTrigger>
</i:Interaction.Triggers>

查看型号代码
   public ICommand mvvmButtonclick
{
get;
private set;
}

用于连接命令 的 Viewmodel 构造函数代码
this.mvvmButtonclick = new ActionCommand(this.ButtonClickedEvent);

在按钮单击时调用的 View 模型中的实际方法
   private void ButtonClickedEvent()
{
MessageBox.Show("worked!!!");
}

这行得通。所以我的问题是:
  • 这是正确的方法吗?
  • 有没有办法可以将 (object sender, RoutedEventArgs e) 参数传播到我的 View 模型中,我应该关心它是否不存在吗?
  • 假设这是一个列表框选择更改事件而不是按钮单击。如何在没有 的情况下获取所选项目的值对象发送者,SelectionChangedEventArgs e 参数?
  • 最佳答案

    我认为您可能错过了交互触发器旨在提供的 View 和 View 模型之间的分离点。

    交互触发器的目的是允许设计者(通常使用 Blend)调用 View 模型上的命令。哪个 UI 元素和 UI 元素上的哪个事件可能调用这样的命令是 设计师 选择。

    如果 ViewModel 确实需要 EventArgs 的特定派生在这样的命令调用期间提供,那么这将束缚设计师的手。它将在 View 和 View 模型之间创建交互触发渴望消除的那种耦合。

    至于您的最后一个问题,确定列表框中当前选定项目并在其更改时收到通知的方法是在绑定(bind)到 SelectedItem 的 View 模型上创建一个属性。的列表框。这种事情不需要员工交互触发器或命令。

    关于Silverlight MVVM : where did my (object sender, RoutedEventArgs e) 去吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4586777/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com