0

是否有人使用 SLExtensions 命令模式 ( http://www.codeplex.com/SLExtensions ) 将命令与 Silverlight 控制事件相关联?从我所见,您只能为每个控件附加一个事件的命令。例如,您只能为按钮添加单击事件、为文本框添加 keydown 事件等。

如果我想为每个控件添加多个事件怎么办?例如,如果我想为按钮的 Click 和 Drop 事件添加命令怎么办。开箱即用似乎没有办法使用 SLExtensions 代码处理此问题。

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

4

3 回答 3

0

dwynne - 你是绝对正确的。我可以使用您指定的代码处理 drop 事件。但是,我仍然必须在我的代码隐藏中实现事件处理程序,然后从那里调用我的 ViewModel。我试图通过在我的代码隐藏中尝试消除编码事件处理程序来遵守 MVVM。相反,我想通过使用附加的命令将我的 XAML 直接连接到我的 ViewModel。

SLExtensions 库允许您执行此操作,但(根据我的经验)每个控件只允许一个事件(单击按钮,keydown 用于文本框等)。对于任何重要的应用程序,这还不够,您的 MVVM 实现会崩溃。

很抱歉没有使用评论区,但 300 个字符有点限制。StackOverflow 的人——你需要提高这个限制。

于 2009-02-22T18:15:40.857 回答
0

您在 XAML 中连接的事件有点有限,但如果 SLExtensions 不自然支持,则没有什么可以阻止您在代码隐藏/视图模型中执行此操作。

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

或者其他什么......如果我误解了你,一些你想做的示例代码会有所帮助。

于 2009-02-21T16:39:19.490 回答
0

我不熟悉 SLExtensions,但在 WPF 中,每个控件都有一个命令的限制,这与控件实现相关联。如果您想为另一个事件执行命令,您必须自己连接。但是,有一个解决方案不需要您在后面的代码中进行此接线......附加行为。事实上,Caliburn ( http://www.codeplex.com/caliburn ) 正是用它的“动作”概念做到了这一点。我很长时间没有看过 Caliburn,也不知道它是否与 Silverlight 兼容,但是您当然可以查看 Actions 是如何在那里编码并实现自己的。

于 2009-03-20T13:10:57.877 回答