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



我在这里需要一些帮助。

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

用户控件中的事件是

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" />

窗口中的按钮事件如下所示:

 private void click_Click(object sender, RoutedEventArgs e)
        {
         /// dosomething   
        }

有人可以在这里帮我吗?我想在单击按钮时调用Item_checked事件。

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

UserControl

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();
}

Window中(其中yourUserControl是对UserControl的引用):

private void click_Click(object sender, RoutedEventArgs e)
{
    yourUserControl.DoSomething();  
}

以空值调用 RoutedEventArgs,如下所示

Item_Checked(PropertyGrid1,null);

相关内容

  • 没有找到相关文章

最新更新