c# - 如何对MainWindow使用UserControl事件

标签 c# wpf mvvm user-controls

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

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

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

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

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

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

最佳答案

你应该能够做这样的事情

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
}

关于c# - 如何对MainWindow使用UserControl事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19093234/

相关文章:

c# - 为什么 C# 编译器不使用动态参数检查调用站点方法的 "staticness"?

c# - 服务器关闭时通过命名管道发送数据

c# - 无法在asp.net core mvc中调用具有带有[FromBody]属性的类参数的API Post方法

C# 通用数据抽象

c# - 在 Configuration.cs 中播种数据,使用 AddOrUpdate 创建重复数据

c# - WPF 应用程序中的后台线程和 UI 线程

c# - 用户无法在已绑定(bind)到浮点值的文本框中键入 '.',而 UpdateSourceTrigger 在 WPF 中为 PropertyChanged

silverlight - 如何在我准备好之前防止 Silverlight RIA 实体附加到数据上下文

绑定(bind)到枚举时的 WPF ComboBox SelectedItem

c# - 在 WPF 中使用数据绑定(bind)时 OxyPlot 不刷新