2017-08-31 91 views
0

如何从myWindow中的myUserControl传播PreviewKeyDown事件。将事件绑定到WPF中的UserControl

在myWindow.xaml

在myUserContorl.xaml

<ComboBox x:Name="combo" PreviewKeyDown="{Binding Path=MyEvent}" /> 

<local:MyFilter x:Name="check" MyEvent="submit" /> 

在myUserContorl.xaml.cs

#region MyEvent 

    /// <summary> 
    /// Gets or sets the Label which is displayed next to the field 
    /// </summary> 
    public EventHandler MyEvent 
    { 
     get { return (EventHandler)GetValue(EventHandlerProperty); } 
     set { SetValue(EventHandlerProperty, value); } 
    } 

    /// <summary> 
    /// Identified the Label dependency property 
    /// </summary> 
    public static readonly DependencyProperty EventHandlerProperty = 
     DependencyProperty.Register("MyEvent", typeof(EventHandler), 
      typeof(myUserControl), new PropertyMetadata("")); 

    #endregion 

这适用于只是 '字符串字段' 像内容或文字...但不适用于事件

回答

1

只需添加(和删除)的事件处理程序到底层控制:

public event KeyEventHandler MyEvent 
{ 
    add { combo.AddHandler(PreviewKeyDownEvent, value); } 
    remove { combo.RemoveHandler(PreviewKeyDownEvent, value); } 
} 

而不XAML任何绑定:

<ComboBox x:Name="combo" /> 
+0

感谢名单。但是, 我怎样才能通过MyEvent从mywindow的 '<本地:mywindow的X:名称= “检查” MyEvent = “提交”/>' '私人无效提交(对象发件人,KeyEventArgs E) { .. } ' – user652644

+0

如你已经拥有它,但将RoutedEventHandler更改为KeyEventHandler。 – Clemens

+0

哇... thanx ...它的工作 – user652644