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

时间:2014-09-13 06:04:45

标签: c# wpf xaml

我在Display中有一个名为MainWindow.xaml的用户控件。 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的自定义类中,我正在升级MouseLeftButtonDown事件,我想在升级此事件时在ThisCommandCameFromWorkspace中执行Display.xaml.cs方法。

这样做的最佳方法是什么?什么是最简单的?

更新

在我的Workspace.cs中我有

public event Action MyEventHandler;

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

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

1 个答案:

答案 0 :(得分:1)

我建议不要将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"/>