![](/img/trans.png)
[英]Is it preferred to initialize a WPF user control in its Loaded event handler?
[英]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.