我在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
用户控件中捕获它并执行其代码隐藏的方法。
答案 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"/>