Silverlight MVVM:我的(对象发送者,RoatedEventArgs e)去了哪里?

2024-03-30

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

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);

单击按钮时调用的视图模型中的实际方法

   private void ButtonClickedEvent()
    {
        MessageBox.Show("worked!!!");
    }

这有效。所以我的问题是:

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

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

交互触发器的目的是允许设计者(通常使用 Blend)在视图模型上调用命令。哪个 UI 元素以及 UI 元素上的哪个事件可能调用此类命令设计师 choice.

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Silverlight MVVM:我的(对象发送者,RoatedEventArgs e)去了哪里? 的相关文章

  • 从 Angular 2 和 Silverlight 应用程序使用相同的 WCF 服务

    目前 我们有一个带有 WCF 服务 后端 的 Silverlight 应用程序 前端 现在 我们将用 Angular 2 应用程序替换 Silverlight 应用程序 而不更改 WCF 服务 只有 UI 会发生变化 在开始使用 Angul
  • WriteableBitmapEx GetPixel() 返回错误值

    我需要组合来自两个 WriteableBitmap 对象的两个颜色值并用它们计算一些内容 因此 我在第一个对象上运行 ForEach 循环 并将其颜色值和第二个对象的颜色值解析为方法 writeableBitmap ForEach x y
  • 如何使用 Silverlight 和客户端 Web 服务将文件上传到 Sharepoint 文档库?

    我遇到的大多数 Sharepoint 文档库上传解决方案都使用 HTTP PUT 方法 但我在 Silverlight 中找不到执行此操作的方法 因为它对 HTTP 方法有限制 我参观过这个http msdn microsoft com e
  • 如何将事件处理程序添加到 VB.NET 中的局部变量

    我在 VB NET 中有一个窗体 用作主窗体中的对话框 它的实例始终是本地定义的 没有对应的字段 当用户单击对话框中的 确定 按钮时 它将触发一个只有一个参数的事件 即我的类之一的实例 由于它始终是局部变量 因此如何为该事件添加事件处理程序
  • 如何在运行时修改Silverlight模板?

    我有一个自定义控件 其中包含具有模板化工具提示的路径 我希望能够在运行时获取对模板中网格的引用 以便我可以根据使用情况修改它的子项 我认为我可以使用 GetTemplateChild 从控件的 OnApplyTemplate 方法中获取对模
  • 绑定到 ObservableCollection 的 ContextMenu 不刷新数据

    给出以下 XAML 片段
  • Silverlight - 将按钮上的 IsEnabled 属性绑定到 ViewModel 上的属性

    我正在构建一个 Silverlight 应用程序 我想在后台进行长时间运行的操作时禁用按钮 我使用的是 MVVM 因此在 ViewModel 中我有一个名为 SearchInProgress 的属性 现在我想在 SearchInProgre
  • MVVMLight - 如何获取视图中ViewModel的引用?

    我正在构建一个 Windows Phone 7 应用程序 并且需要在视图中引用 ViewModel 以便可以从事件处理程序设置属性 唯一的问题是我无法获得该参考 我做了什么 我有一个 ViewModelLocator 删除了不相关的位 st
  • 联合两个 ObservableCollection 列表

    我有两个 ObservableCollection 列表 我想将它们合并起来 我天真的方法是使用 Union 方法 ObservableCollection
  • Breeze.js 查询不更新淘汰赛视图

    我正在通过 Breeze js 查询数据 第一次运行良好 第二次视图未更新 html a Order by Newest a a Order by Score a div ul li strong span span strong span
  • 改变 Silverlight 应用程序的文化

    我目前正在开发 Silverlight 应用程序 我有一些数据网格 文本块 我使用标准绑定来显示值 其中一些是日期 例如
  • 在非 UI 线程上运行 RIA 服务

    我正在尝试从非 UI 线程进行 RIA 服务调用 我通过打开新线程和后台工作人员进行了调用 但对于这两种情况 回调都在 UI 线程上运行 是否可以在调用者线程而不是 UI 上执行回调 Thanks tl dr Use WCF 自行将结果编组
  • 使用 MVVM 模式时,与属性更改相关的代码应该放在 setter 中还是事件中?

    寻找有关在何处放置取决于属性更改的代码的指导 例如 我有一个视图模型 用于保存应用程序设置的状态 public SettingsViewModel ISettingsRepository settings settings settings
  • 使用 MVVM 在 WPF 中进行 COMBOBOX 过滤

    我正在使用 WPF mvvm 方法开发一个应用程序 我有一个要求 必须在组合框中显示项目列表以供选择 基于一些标志 我需要从组合框中过滤掉一些项目以供选择 我尝试使用两种不同的项目源 一个具有完整列表 另一个具有过滤列表 并基于我想要更改项
  • 如何在不监听框架控件中定义的任何鼠标事件的情况下检测鼠标单击?

    是否可以在不侦听框架控件中定义的任何鼠标事件的情况下检测鼠标单击 我的意思是 我不想编写如下代码 control MouseLeftButtonDown this HandleMouseLeftButtonDown 但我想知道用户是否点击屏
  • 基本 WinForm KeyDown 事件处理

    我正在使用 WinForms 我已经为KeyDown主窗体的事件 从而调用按钮的Click事件处理程序 The Click调用的事件处理程序取决于按下的特定键 如果用户单击该按钮而不是使用该键 然后随后尝试使用该键 则该键 例如向下箭头 将
  • 滚动 X 轴绘图区域 - Silverlight 柱系列

    我有一个工作正常的柱形系列图表 我有一个需要添加的功能 我希望水平滚动能够启用到 x 轴的绘图区域 这是屏幕截图 如果您看到屏幕截图 我有 6 个项目 并且由于项目数量较多 条形图非常细 所以假设如果我有 20 个项目 那么条形图将根本不可
  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 虚拟乐器 iPhone 应用程序中的 VoiceOver 辅助功能?

    我收到盲人用户的评论 称我的一些声音和音乐相关应用程序只能在关闭 VoiceOver 的情况下使用 在 iOS 设备上启用 VoiceOver 辅助功能后 是否可以启用音乐键盘或鼓垫触摸区域 以便在点击键盘键或虚拟鼓组 等 时可以立即播放音
  • MvvmCross 在 Xamarin Studio 中工作吗?

    我花了一段时间得到一个直接的答案 我做了很多搜索和阅读 并尝试了很多东西 有时听起来是可能的 有时听起来只有通过进行链接和其他操作才可能实现 这是我试图避免的事情 我是 PCL 的忠实粉丝 我使用 Visual Studio 2012 Xa

随机推荐