簡體   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