我应该如何处理每个控制多个事件瓦特/ Silverlight中使用MVVM命令模式?(How sho

2019-10-29 03:47发布

是使用SLExtensions命令模式(任何人都http://www.codeplex.com/SLExtensions的命令Silverlight控件的事件关联)? 从我所看到的东西,你只能每一个控制连接事件的命令。 例如,你可以只添加一个点击事件的按钮,keydown事件为一个文本框,等等。

如果我想添加每个控制的多个事件? 例如,如果我想添加命令两个点击和拖放事件的按钮是什么。 开箱似乎没有要与SLExtensions代码来处理此问题的方法。

顺便说一句,这是一个模型 - 视图 - 视图模型(MVVM)上下文。

Answer 1:

哪些事件高达丝在XAML是有点有限,但是却没有什么可以阻止你在后面的代码/视图模型做,如果它不自然地SLExtensions支持。

if (action == dropped)
{
  Commands.Dropped.Execute();
else
{
  Commands.Clicked.Execute();
}

或任何...如果我误会了你,你想干什么一些示例代码将是有益的。



Answer 2:

dwynne - 你是绝对正确的。 我可以用你指定的代码处理drop事件。 不过,我仍然要执行的事件处理程序在我的代码隐藏然后从那里打电话给我的视图模型。 我试图通过尝试消除该编码的事件处理程序到我的代码隐藏坚持MVVM。 相反,我想直接通过使用附加命令线我的XAML我的视图模型。

该SLExtensions库允许你这样做,但(从我所经历的)只允许每个控制一个事件(点击查看按钮,为的keydown文本框等)。 对于任何不平凡的应用程序,这是不够的,你的MVVM执行中断。

对不起,不使用评论区,但300个字符是一个有点限制。 StackOverflow的人 - 你需要了这一限制。



Answer 3:

我不熟悉SLExtensions但在WPF你有每一个控制命令,它是由控制实现相关的相同限制。 如果你想执行的命令的另一个事件,你必须连线,你自己。 但是,这并不需要你这样做布线的背后......附加的行为的代码的解决方案。 事实上,卡利( http://www.codeplex.com/caliburn )确实只是这与它的“动作”的概念。 我没有在很长一段时间看着卡利,并且不知道,如果它是Silverlight的兼容,但你肯定可以考虑的行动是如何编纂那里实现自己的。



文章来源: How should I handle multiple events per control w/command pattern using MVVM in Silverlight?