是否有人使用SLExtensions命令模式(http://www.codeplex.com/SLExtensions)将命令与Silverlight控件事件相关联?从我所看到的,你只能为每个控件附加一个事件的命令。例如,您只能为按钮添加click事件,为文本框添加keydown事件等。
如果我想为每个控件添加多个事件怎么办?例如,如果我想为按钮的Click和Drop事件添加命令,该怎么办?开箱即用似乎没有办法用SLExtensions代码处理这个问题。
BTW,这是在Model-View-ViewModel(MVVM)上下文中。
答案 0 :(得分:0)
您在XAML中连接的事件有点受限,但是如果SLExtensions自然不支持,那么在代码隐藏/视图模型中没有什么可以阻止您这样做。
if (action == dropped)
{
Commands.Dropped.Execute();
else
{
Commands.Clicked.Execute();
}
或者其他......如果我误解了你,你想做的一些示例代码会有所帮助。
答案 1 :(得分:0)
SLExtensions库允许您执行此操作,但(根据我的经验)每个控件只允许一个事件(单击按钮,文本框的keydown等)。对于任何非平凡的应用程序,这是不够的,并且您的MVVM实现中断了。
很抱歉没有使用评论区域,但300个字符有点限制。 StackOverflow人员 - 您需要达到此限制。
答案 2 :(得分:0)
我不熟悉SLExtensions,但在WPF中,每个控件都有一个命令的限制,它与控件实现相关联。如果您想要为另一个事件执行命令,则必须自己连接。但是,有一种解决方案不需要您在附加行为的代码中进行此布线。事实上,Caliburn(http://www.codeplex.com/caliburn)以其“行动”概念来做到这一点。我很长一段时间没有看过Caliburn,也不知道它是否与Silverlight兼容,但是你当然可以研究一下如何将Action编成法典并实现自己的。