Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向wpf中用户控件中的事件处理程序注册_C#_Wpf_Events - Fatal编程技术网

C# 如何向wpf中用户控件中的事件处理程序注册

C# 如何向wpf中用户控件中的事件处理程序注册,c#,wpf,events,C#,Wpf,Events,我有一个代表员工的用户控件。xaml是一个字符图标的图像,并且有一个用于员工姓名的文本框。 在文本框中键入文本时,将引发Textchanged事件,并调用此事件处理程序: private void employeeNameChangedEventHandler(object sender, TextChangedEventArgs args) { _employeeName = employeeName.Text; } 是用户控件中的属性

我有一个代表员工的用户控件。xaml是一个字符图标的图像,并且有一个用于员工姓名的文本框。 在文本框中键入文本时,将引发Textchanged事件,并调用此事件处理程序:

private void employeeNameChangedEventHandler(object sender, TextChangedEventArgs args)
        {
            _employeeName = employeeName.Text;
        }
是用户控件中的属性,因此可以检索名称:

 public string EmployeeName
        {
            get { return _employeeName; }
        }
在MainWindow.xaml.cs中,我想监听用户控件中的TextChanged eventhandler

我读过关于代表的书,对Unity的活动有一些经验,但不确定在wpf中实现这一点的最佳方式


Ta

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

    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

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

我不明白你想要什么。如果要将绑定与dependency属性一起使用,请在用户控件中创建dependency属性。如果要在主窗口代码中访问用户控件,请为用户控件指定一个名称,并通过其名称.me.调用用户控件。。谢谢!我完全明白了,但你能解释一下线路名称的变化吗,路由策略。泡泡,芬坦德勒类型,用户控制类型1正在做什么?
<local:UserControl1 x:Name="uc" NameChanged="NameChanged"/>
 private void NameChanged(object sender, RoutedEventArgs e)
        {
            //when you input one character in you usercontrol, you will get here
        }