繁体   English   中英

在WPF中从子级执行父级用户控件中的方法

[英]Executing a method in parent user control from a child in WPF

我在MainWindow.xaml有一个名为Display的用户控件。 Display用户控件本身具有一个自定义类Workspace.cs ,如下所示:

<UserControl x:Class="Program.Main.Controls.Display.Display"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:workspaces="clr-namespace:Program.Workspaces">

    <Border>
        <Grid>
            <workspaces:Workspace x:Name="MyWorkspace" ClipToBounds="True"/>
        </Grid>
    </Border>
</UserControl>

在我的自定义类Worskspace.cs ,正在Worskspace.cs MouseLeftButtonDown事件,在ThisCommandCameFromWorkspace此事件时,我想在Display.xaml.cs执行ThisCommandCameFromWorkspace方法。

最好的方法是什么? 最简单的是什么?

更新:

在我的Workspace.cs中,

public event Action MyEventHandler;

private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
            if (MyEventHandler!= null)
                MyEventHandler();
    }

现在,我想在“ Display用户控件中捕获它并执行其代码隐藏的方法。

我建议不要使用Action作为事件委托类型,而应使用通用类型EventHandler 并且不要将其MyEventHandler因为它不是处理程序,而只是事件:

public event EventHandler MyEvent;

private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    if (MyEvent != null)
    {
        MyEvent(this, EventArgs.Empty);
    }
}

现在,您可以轻松地在Display的XAML中附加事件的处理程序(由Visual Studio中的Intellisense支持):

<workspaces:Workspace ... MyEvent="Display_MyEvent"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM