将事件处理程序与静态属性的子属性绑定
本文关键字:属性 绑定 静态 事件处理 程序 | 更新日期: 2023-09-27 18:31:46
我的应用程序中有一个静态对象SomeClass.Current,它具有属性MySelectionChangedEvent。在 WPF 中,我需要将列表框选择已更改事件绑定到此子属性。对于静态对象的非处理程序属性,此绑定可以正常工作,但不适用于处理程序:
<ListBox SelectionChanged="{Binding Path=MySelectionChangedEvent, Source={x:Static SomeClass.Current}}" ...></ListBox>
,我尝试通过以下方式声明 MySelectionChangedEvent:
public EventHandler<SelectionChangedEventArgs> MySelectionChangedEvent{get;set;}
或
public event EventHandler<SelectionChangedEventArgs> MySelectionChangedEvent;
或
public static readonly DependencyProperty MySelectionChangedEventProperty =
DependencyProperty.Register("MySelectionChangedEvent",
typeof(EventHandler<SelectionChangedEventArgs>),
typeof(SomeClass),
new PropertyMetadata(new EventHandler<SelectionChangedEventArgs>((s, e) => { })));
但是一切都会导致运行时错误:
Cannot find DependencyProperty or PropertyInfo for property named 'MySelectionChangedEvent'. Property names are case sensitive. Error at object 'System.Windows.Controls.ListBox' in markup file 'DbEditor;component/...'
将事件处理程序绑定到静态对象的属性(或字段)的正确方法是什么?
只需
从标准生成方法调用我的自定义处理程序即可解决问题。