基本上,我有自定义控件FooControl
。
public class FooControl : ItemsControl
{
//Code
}
我需要添加一些事件处理,但不是使用RoutedEvent,而是更喜欢使用命令。我不确定如何去做这件事。如果我想要它,以便当Bar1Property(DependencyProperty)更改时,它会引发Execute关联的execute属性。我通过.NET Reflector查看了ButtonBase代码,哇,看起来过于复杂。添加命令这个复杂吗??显然,我还必须这样做,以便我的控件启用/禁用自身的某些部分,具体取决于CanExecuteChanged是否被更改。但我猜这是另一部分。
到目前为止,这是我的OnBar1Changed函数......
private static void OnBar1Changed(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
FooControl element = (FooControl)obj;
//What to do here?
}
答案 0 :(得分:4)
听起来就像你提出问题一样,你想支持自定义控件的命令(比如Button支持)。为此,我建议您查看ICommandSource的实现方式。 Microsoft会自行介绍如何自行实现它:
答案 1 :(得分:2)
在最简单的层面上,您真正需要的就是:
FooControl element = obj as FooControl;
if (element == null) return;
if (element.MyCommand != null && element.CanExecute(this.CommandParameter)
{
element.MyCommand.Execute(this.CommandParameter);
}
您还必须为Command和CommandParameter创建依赖项属性。
希望有所帮助,