问题标签 [eventtocommand]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3269 浏览

wpf - 使用 MVVM Light EventToCommand 绑定 WPF Image 控件事件

我想在 WPF MVVMLight 应用程序中将命令连接到 Image 的 MouseDown 事件。我有以下代码:

当我将 < Triggers > 粘贴到其他控件中(例如同一视图中的文本块)时,MouseDown 确实会发生(绑定是正确的)。试过把它放在Border里面,还是没有效果。我想我错过了一些东西。有什么想法吗?提前致谢。

0 投票
1 回答
7847 浏览

wpf - 如何将 WPF DataGridRow 事件与 Interaction.Triggers / MVVM EventToCommand 一起使用

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

在这种情况下,SelectionChanged事件属于DataGrid,并且Interaction.Triggersxaml 直接嵌套在 内部DataGrid

当事件是 a (每行DataGridRow都有自己的事件)时,我无法弄清楚如何做同样的事情。

我设法做到了这一点,但它涉及一个我想避免的处理函数:

Row_MouseEnter事件中(在我的 .xaml.cs 文件上)我只是在 ViewModel 上“找到命令”并以编程方式触发它。

我真的很想知道是否有办法直接用Interaction.Triggers

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

0 投票
2 回答
4442 浏览

wpf - 将命令附加到 ListView 的 ScrollViewer.ScrollChanged

WPFListView类可以设置为在没有外部ScrollViewer的情况下自动处理滚动,并且可以通过编写 XAML 来为控件的内部滚动条注册事件处理程序,如下所示:

如何将其附加到 MVVM light 命令?我尝试了以下方法,但它不起作用:

注意:ScrollCommand-RelayCommand来自我的视图模型。

0 投票
2 回答
227 浏览

mvvm - mvvmlight eventto 命令修饰符

我正在寻找一种将修饰符添加到 EventToCommand usign mvvm light 的解决方案。我想要实现的是绑定一个命令让我们说 mouseEnter 但只有在按下 ctrl 时。下面我只有一个 mouseenter 命令。

知道如何添加键盘修饰符吗?

0 投票
1 回答
148 浏览

silverlight-4.0 - MVVMLight:如何断开事件处理程序

我使用 MVVMLight EventToCommand 将命令连接到 MouseEnter 事件:

如何以编程方式解开处理程序?
viewObject.MouseEnter -= viewObject.GetViewModel().DragHandleMouseEtnerCommand 给出类型不匹配错误。

更新:看起来我需要以某种方式使用 viewObject.Triggers 集合。建议...?
更新二:不,触发器集合中没有任何内容......

感谢您的任何见解...

0 投票
1 回答
956 浏览

mvvm - MVVM 事件到命令

嗨朋友,我正在开发MVVM WPF 应用程序,我需要执行TelerikRadTab Control SelectionChanged事件的事件,我知道使用 MVVM 灯使用 EventToCommand 行为很简单,但是因为我使用的是 MVVM 框架(链接),所以我必须使用交互触发建议@Link

对于下面我添加了交互 dll 参考

在 XAML 中我包括

当我构建应用程序时,出现以下错误。

XML 命名空间“链接”中不存在属性“事件名称”。

对此的任何建议或帮助都会有很大帮助。

0 投票
1 回答
207 浏览

xaml - 在 Xaml 中绑定分组集合

我搜索了一下,但我找到的信息不是我需要的。所以我决定问你们所有人——我确定这是一个新手问题,但我真的不明白。让我们开始吧:我有一个 DataSource,它是一个分组的可观察集合。目前我有 2 组不同数量的项目。这两个组和项目属于同一个公共基础:

这是模型的构造函数。在 ViewModel 我填充它。现在我想将带有命令的 ItemClick 绑定到我的 ViewModel。我确实喜欢这个(只是一小部分):

但现在问题来了。在“Binding UniqueId”中,它说 DataContext 是我的 ViewModel,所以我无法将它连接到模型的属性。看着 Page.DataContext 我告诉 XAML 你使用我的 ViewModel 作为 DataContext。我想这是正确的。但是我怎样才能访问模型属性?我试过这样做(将我的模型定义为 DataModel):

但正如我事先猜测的那样,它没有用 - 作为参数我得到空值。

我会感谢任何帮助,因为正如我在帖子开头所说的那样:我真的不明白......

0 投票
1 回答
7821 浏览

wpf - WPF如何将混合交互触发器添加到样式资源

我正在使用带有 WPF 4.5 的 VS 2012

我希望能够将混合交互触发器添加到样式资源,以便我可以在一个地方(资源字典)定义它并在我的应用程序中的许多地方使用。

具体来说,我想使用 MVVM-Light 框架附带的 EventToCommand 并将其插入文本框样式并附加到文本框的 LostFocus 事件。我计划使用它来标记某些文本框,其ValidationStyle触发绑定命令(在视图模型中)到文本框的 LostFocus 事件。此验证样式将使用 IDataErrorInfo 通过 UI 向用户显示错误。

这个问题类似于以下问题(但它们没有完整的解决方案):

按钮样式的 EventToCommand

如何在样式设置器中添加混合行为

问题: 如何将混合 EventToCommand 添加到绑定到视图模型数据上下文中的命令的文本框 lostfocus(我不想使用代码隐藏或附加属性,我希望它完全在 XAML 中定义)?

0 投票
2 回答
2503 浏览

wpf - 在 DataTemplate 中使用 MVVM Light EventToCommand

所以我有一个 WPF 用户控件:

这是用户控件的主视图模型:

我已经尝试了我在网络上遇到的所有方法来触发 DataSourceTemplate DataTemplate 中的 EventToCommand。事实上,我很确定它知道 OpenCommand 在哪里,因为如果我将路径更改为 gobbledygook,输出窗口会抛出一个错误,提示“ObjectTreeView”(这是绑定到UserControl) 没有 gobbledygook 属性。所以我想我已经正确设置了 DataContext ...

但是每当我点击文本块时......什么都没有。

真的试图避免代码隐藏(感觉不对)和完全披露,我使用的是 MVVM Light 的 EventToCommand 但不是完整的工具包,尽管我很想重写我到目前为止的内容以查看是否使用服务定位器将解决这个问题。

0 投票
1 回答
1452 浏览

xaml - EventToCommand 与可移植视图模型中的参数绑定

我正在实现一个由多个平台上的应用程序共享的视图模型。我正在使用具有自己的 MvxEventToCommand 类的 MvvmCross v3,但我相信对于 MVVM Light 等其他框架来说,挑战是相同的。只要事件不带参数使用,实现就很简单了,像点击控件这样的简单交互就是这种情况。

但是当命令需要处理事件参数时,事情变得更加复杂。例如,视图模型需要对某些滚动条更改采取行动(并在关联的列表视图中加载更多项目)。这是 XAML 的示例:

(MvvmCross 使用的是 MvxEventToCommand,但原理是一样的)。

然后在我的模型中,我可以有以下命令处理程序:

(MvvmCross 中的 MvxCommand)。

问题是 ScrollChangedEventArgs 是特定于平台的,并且此代码根本无法在可移植类库中编译。这是任何命令的普遍问题,它不仅需要在触发事件时进行推送,而且需要更具体的事件详细信息。将此代码移动到特定于平台的部分是愚蠢的,因为它或多或少地扼杀了可移植视图模型和无代码隐藏视图的概念。我试图搜索在不同平台之间共享视图模型的项目,但它们都使用简单的事件,如“Tap”,没有附加事件详细信息。

更新 1我同意 Stuart 的评论,即视图模型应该只处理更高级别的抽象,所以我将重新表述最初的担忧:如何将低级交互的结果映射到触发业务逻辑命令的平台中立事件?考虑上面的例子:业务逻辑命令是“在列表中加载更多项目”,即我们处理列表虚拟化,其中最初加载来自大型集合的有限数量的项目,并且向下滚动到列表底部应该导致加载额外的项目。

WinRT 可以通过使用支持 ISupportIncrementalLoading 接口的可观察集合来处理列表虚拟化。运行时检测此功能并在用户向下滚动列表时自动从相应服务请求额外的项目。在其他平台上,此功能应手动实现,除了对 ScrollViewer ScrollChanged 事件做出反应外,我找不到任何其他方法。然后我可以看到另外两个选项:

  • 将 OnScrollChanged 处理程序放在代码隐藏文件中并调用可移植视图模型更高级别的事件(例如“OnItemsRequested”);
  • 避免使用代码隐藏的东西并努力将 ScrollChanged 事件直接连接到视图模型,然后我们需要首先重新映射特定于平台的事件。

只要不支持第二个选项,只要将事件处理程序放在代码隐藏文件中就可以了,只要它仅用于事件映射即可。但我想研究使用第二种选择可以做什么。MvvmCross 有 MapCommandParameter 类似乎可以提供帮助,所以我想知道我是否应该利用那个。

更新 2我尝试了 MapCommandParameter 方法,它允许我插入一个特定于平台的适配器,该适配器将映射低级事件以查看特定于模型的命令。因此,第二个选项毫不费力地奏效了。Stuart 还建议使用 listview-subclassing,因此无需关心滚动事件。我打算以后玩它。