c#-在代码中创建控件时如何将Click事件绑定到ViewModel
作者:互联网
通常,我在XAML中创建视图,然后使用Caliburn.Micro将事件绑定到视图模型.
<Button cal:Message.Attach="[MouseLeftButtonUp]=[ModifyList($source)]" />
但是,我现在需要基于配置数据在代码中创建按钮.
该代码不在后面的代码中,而是在工厂类中.
Button button = new Button() { Content = "Click Me" };
那么问题是如何安排活动的进行?
解决方法:
我以前从未做过此事,因此这可能不是最好的方法,但它确实起作用了.
我在下面编写了一个扩展方法,该方法应该使将ActionMessage附加到任何控件的任何事件变得非常简单.
public static class UIElementExtension {
public static void AttachActionMessage(this DependancyObject control, string eventName, string methodName, object parameter) {
var action = new ActionMessage();
action.MethodName = methodName;
action.Parameters.Add(new Parameter { Value = parameter });
var trigger = new System.Windows.Interactivity.EventTrigger();
trigger.EventName = eventName;
trigger.SourceObject = control;
trigger.Actions.Add(action);
Interaction.GetTriggers(control).Add(trigger);
}
}
要使用它,只需创建您的控件并调用AttachActionMessage():
var button = new Button { Content = "Click Me" };
button.AttachActionMessage("Click", "ModifyList", DataContext);
标签:c,caliburn-micro 来源: https://codeday.me/bug/20191122/2063047.html