簡體   English   中英

如何在 wpf 的用戶控件中注冊事件處理程序

[英]how to register with an event handler that is in a user control in wpf

我有一個代表員工的用戶控件。 xaml 是一個字符圖標的圖像,並且有一個員工姓名的文本框。 當在文本框中輸入文本時,會引發 Textchanged 事件並調用此事件處理程序:

private void employeeNameChangedEventHandler(object sender, TextChangedEventArgs args)
        {
            _employeeName = employeeName.Text;
        }

這是用戶控件中的一個屬性,因此可以檢索名稱:

 public string EmployeeName
        {
            get { return _employeeName; }
        }

在 MainWindow.xaml.cs 我想聽用戶控件中的 TextChanged 事件處理程序。

我已經閱讀了有關代表的信息,並對 Unity 的事件有一些經驗,但不確定在 wpf 中實現這一點的最佳方法。

您可以使用客戶路由事件。 在您的用戶控件中,您需要添加路由事件,如下所示:

    public static readonly RoutedEvent NameChangedEvent = EventManager.RegisterRoutedEvent

               ("NameChanged", RoutingStrategy.Bubble, typeof(EventHandler<RoutedEventArgs>), typeof(UserControl1));

        public event RoutedEventHandler NameChanged
        {

            add { this.AddHandler(NameChangedEvent, value); }

            remove { this.RemoveHandler(NameChangedEvent, value); }

        }

並且在文本框的 textchanged 事件中,您應該提出您的客戶路由事件。

 private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            this.RaiseEvent(new RoutedEventArgs(UserControl1.NameChangedEvent));
        }

現在,您只需要在需要用戶控件的地方添加訂閱您的客戶路由事件,就像您使用 textchanged 一樣。

<local:UserControl1 x:Name="uc" NameChanged="NameChanged"/>

而 NameChanged 是這樣的

 private void NameChanged(object sender, RoutedEventArgs e)
        {
            //when you input one character in you usercontrol, you will get here
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM