如何将UserControl事件用于MainWindow

时间:2013-09-30 11:36:54

标签: c# wpf mvvm user-controls

我正在使用MVVM模式创建WPF应用程序。

在我的应用程序中,我有一个主窗口,它像应用程序的主模板一样工作。我在TreeView中创建了UserControl,就像菜单一样。

在主窗口中,所有演示文稿都托管在标签控件中,因此我TreeView中的每个项目实际上都是一个新标签。

选项卡控件在主窗口中定义。

所以我的问题是,当TreeView的事件处理程序位于TreeView代码后面时,如何在当前选项卡控件中打开新选项卡(按UserControls中的项目)文件而不是在主窗口文件中,所以我无法与它交互?

是否有可能以某种方式在主窗口的代码隐藏文件中托管TreeView的事件处理程序?

1 个答案:

答案 0 :(得分:1)

你应该可以做这样的事情

<强> Usercontrol.xaml

<TreeView SelectedItemChanged="TreeViewHandler" />

<强> Usercontrol.cs

public delegate void TreeViewSelectedItemHandler(object sender, RoutedPropertyChangedEventArgs<object> e);
public event TreeViewSelectedItemHandler TreeViewSelectedItemChanged;

private void TreeViewHandler(object sender, RoutedPropertyChangedEventArgs<object> e)
{
    //Capture event from usercontrol and execute defined event
    if (TreeViewSelectedItemChanged != null)
    {
        TreeViewSelectedItemChanged(sender, e);
    }
}

<强> Window.xaml

<local:myUsercontrol TreeViewSelectedItemChanged="myHandler" />

<强> Window.cs

private void myHandler(object sender, RoutedPropertyChangedEventArgs<object> e)
{
    //Do stuff
}