WPF注册功能依赖项属性
问题描述:
我还在学习WPF和我试图创建自己的控制,但我有一个问题,注册一个函数作为一个DependencyPropertyWPF注册功能依赖项属性
比方说,我有我的控制,我希望用户指定功能为我控制的OnChange事件,我尝试以下
public readonly static DependencyProperty OnChangeProperty;
public delegate void DependencyPropertyChangedEventHandler(Object sender, DependencyPropertyChangedEventArgs e);
public DependencyPropertyChangedEventHandler Change;
OnChangeProperty = DependencyProperty.Register("OnChange", typeof(DependencyPropertyChangedEventHandler), typeof(MyControl), new FrameworkPropertyMetadata(null));
public DependencyPropertyChangedEventHandler OnChange
{
get { return (DependencyPropertyChangedEventHandler)GetValue(OnChangeProperty); }
set { SetValue(OnChangeProperty, value); }
}
<my:MyControl OnChange="Control_OnChange"/>
但它没有工作,这给了我一个XAML解析异常,当它遇到“Control_OnChange”任何人都可以将我指向正确的方向吗?我没有在MSDN或SO这个问题上找到任何答案,我是否错过了一些东西?
答
您不能将函数注册为依赖项属性。您应该Create a Custom Routed Event:
// Register the routed event
public static readonly RoutedEvent SelectedEvent =
EventManager.RegisterRoutedEvent("Selected", RoutingStrategy.Bubble,
typeof(RoutedEventHandler), typeof(MyCustomControl));
// .NET wrapper
public event RoutedEventHandler Selected
{
add { AddHandler(SelectedEvent, value); }
remove { RemoveHandler(SelectedEvent, value); }
}
然后你就可以在引发该事件的UserControl
:
// Raise the routed event "selected"
RaiseEvent(new RoutedEventArgs(MyCustomControl.SelectedEvent));
然后你就可以将处理程序添加到事件:
<my:MyCustomControl Selected="Control_OnSelected"/>
它的工作原理感谢: ) – Tofandel 2014-10-06 10:49:10