Wpf MVVM指示灯:将事件绑定到代码隐藏中的命令
我正在使用MVVM light将视图中UIElements上的事件绑定到视图模型中的ICommands,这非常有效 然而,我有一种情况,我必须在运行中创建一些控件,我在视图的代码隐藏中这样做,因为这似乎是最好的地方,毕竟是UI代码。当我在代码中生成这些控件时,我还需要在代码中创建事件绑定,尽管进行了几次尝试,但没有达到预期的结果 有人这样做过吗,或者有人知道怎么做吗 感谢您的帮助Wpf MVVM指示灯:将事件绑定到代码隐藏中的命令,wpf,mvvm,binding,mvvm-light,Wpf,Mvvm,Binding,Mvvm Light,我正在使用MVVM light将视图中UIElements上的事件绑定到视图模型中的ICommands,这非常有效 然而,我有一种情况,我必须在运行中创建一些控件,我在视图的代码隐藏中这样做,因为这似乎是最好的地方,毕竟是UI代码。当我在代码中生成这些控件时,我还需要在代码中创建事件绑定,尽管进行了几次尝试,但没有达到预期的结果 有人这样做过吗,或者有人知道怎么做吗 感谢您的帮助 谢谢你的回答和评论。Matt是对的——问题是如何在代码中使用EventToCommand而不是XAMl。马特-我确
谢谢你的回答和评论。Matt是对的——问题是如何在代码中使用EventToCommand而不是XAMl。马特-我确实需要在运行时生成控件,因为直到那时我才知道控件是什么。控件位于功能区上,并且功能区是上下文相关的,即每当主视图发生更改时,功能区上的控件都会随之更改并需要生成
我已经找到了一个使用附加属性的解决方案,但我仍然想知道如何(以及是否)使用MVVM Light来实现这一点。我不知道MVVM Light,但假设您的viewmodel设置为视图的
DataContext
,则至少有以下两个选项
命令
属性:
var buttonA = new Button();
buttonA.Content = "Click me";
buttonA.Command = (DataContext as TheViewModel).TheCommand;
var buttonB = new Button();
buttonB.Content = "Click me too";
var binding = new Binding("TheCommand");
binding.Source = DataContext;
buttonB.SetBinding(Button.CommandProperty, binding);
我认为问题更多的是如何通过代码而不是XAML来添加MVVM Light Toolkit中包含的EventToCommand附加属性。我认为你是对的。我想我的答案没有多大用处:——|这没有回答您的问题,但您确定需要在运行时生成控件吗?同样的事情是否可以通过数据模板和触发器或模板选择器来完成?