C# 将事件路由到其他用户控件

C# 将事件路由到其他用户控件,c#,wpf,user-controls,event-handling,C#,Wpf,User Controls,Event Handling,我需要一些帮助 我的窗户上有一个按钮。单击按钮时,我希望将采取的操作路由到已在其他usercontrol中创建的事件。这些用户控件嵌入在窗口本身中 usercontrol中的事件是 public void Item_Checked(object sender, RoutedEventArgs e) { object selected = this.GetType().GetField("Person", System.Reflection.Bindi

我需要一些帮助

我的窗户上有一个按钮。单击按钮时,我希望将采取的操作路由到已在其他usercontrol中创建的事件。这些用户控件嵌入在窗口本身中

usercontrol中的事件是

public void Item_Checked(object sender, RoutedEventArgs e)
        {
               object selected = this.GetType().GetField("Person", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static).GetValue(this);
               this. PropertyGrid1.SelectedObject = selected;

        }
在窗口中创建的按钮如下所示:

<Button Content="clickme" Name="click" Grid.Column="2" Height="20" Width="50" Click="click_Click" />

有人能帮我吗??我想在单击按钮时调用Item_checked事件。

使用空值调用RoutedEventArgs,如下所示

Item_Checked(PropertyGrid1,null);

这是编程中常见的问题。普遍接受的解决方案是简单地添加一个新方法,其中包含
项目\u Checked
事件处理程序中的当前内容,然后从处理程序和您可能希望的任何其他地方调用该方法:

用户控件中

public void DoSomething()
{
    object selected = this.GetType().GetField("Person", 
        System.Reflection.BindingFlags.NonPublic | 
        System.Reflection.BindingFlags.Static).GetValue(this);
    this.PropertyGrid1.SelectedObject = selected;
}

public void Item_Checked(object sender, RoutedEventArgs e)
{
    DoSomething();
}
private void click_Click(object sender, RoutedEventArgs e)
{
    yourUserControl.DoSomething();  
}
窗口中
(其中
您的用户控件
是对您的
用户控件
的引用):


选中的项_来自何处?假设它是另一个用户控件中的自定义事件。总之,当单击按钮时,您希望调用另一个方法。那么就这样做吧。这只是一个简单的方法调用。方法项_Checked只是一个普通的方法,可以按原样调用,也可以添加到委托中,并在调用委托时以委托形式调用。最后,它是一个与其他方法类似的方法。您可以将EventArgs.Empty作为null。
private void click_Click(object sender, RoutedEventArgs e)
{
    yourUserControl.DoSomething();  
}