I have a user control named Display
in MainWindow.xaml
. Display
user control itself has a custom class Workspace.cs
in it like this:
<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>
In my custom class that is Worskspace.cs
I'm rising a MouseLeftButtonDown
event, I want to execute the ThisCommandCameFromWorkspace
method in Display.xaml.cs
when rising this event.
What is the best approach to do this? And What is the easiest?
Updated:
In my Workspace.cs I have
public event Action MyEventHandler;
private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (MyEventHandler!= null)
MyEventHandler();
}
Now I want to capture this in Display
user control and execute a method of its code-behind.
I'd suggest not to use Action
as event delegate type, but instead use the common type EventHandler
. And don't call it MyEventHandler
as it is not a handler, but just the event:
public event EventHandler MyEvent;
private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (MyEvent != null)
{
MyEvent(this, EventArgs.Empty);
}
}
Now you would easily attach a handler for the event in the Display's XAML (supported by Intellisense in Visual Studio):
<workspaces:Workspace ... MyEvent="Display_MyEvent"/>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.