[英]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.