C# WPF UserControl子组件事件处理程序

C# WPF UserControl子组件事件处理程序,c#,wpf,xaml,events,C#,Wpf,Xaml,Events,我有一个UserControl,它包含一个按钮(或任何其他对象) 我想访问该按钮(或任何对象)的单击事件或包含UserControl的父级的任何事件 <Window x:Class="StackOverFlowQuestion.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com

我有一个UserControl,它包含一个按钮(或任何其他对象)


我想访问该按钮(或任何对象)的单击事件或包含UserControl的父级的任何事件

<Window x:Class="StackOverFlowQuestion.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:StackOverFlowQuestion"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <local:UserControlButton/>
    </Grid>
</Window>


谢谢。

很简单。只需将一个公共事件放置到
UserControl
(代码隐藏),因为它可以从UserControl外部访问,并从您的按钮转发Click事件

public partial class UserControlButton : UserControl
{
    public event RoutedEventHandler ButtonClick;

    private void UsrCtlButton_Click(object sender, RoutedEventArgs e)
    {
        ButtonClick?.Invoke(sender, e);
    }
}
用户控件的XAML

<Button x:Name="Button1" Content="Click me for testing" Click="UsrCtlButton_Click"/>

这很容易。只需将一个公共事件放置到
UserControl
(代码隐藏),因为它可以从UserControl外部访问,并从您的按钮转发Click事件

public partial class UserControlButton : UserControl
{
    public event RoutedEventHandler ButtonClick;

    private void UsrCtlButton_Click(object sender, RoutedEventArgs e)
    {
        ButtonClick?.Invoke(sender, e);
    }
}
用户控件的XAML

<Button x:Name="Button1" Content="Click me for testing" Click="UsrCtlButton_Click"/>

如何以及从何处访问?XAML?或者代码?访问它可能意味着从xaml代码中添加事件处理程序。无法将事件处理程序连接到窗口的xaml标记中的
用户控件中定义的
按钮
。然后,您需要在
UserControl
类中定义一个事件。这正是我所做的,非常感谢。如何以及从何处访问它?XAML?或者代码?访问它可能意味着从xaml代码中添加事件处理程序。无法将事件处理程序连接到窗口的xaml标记中的
用户控件中定义的
按钮
。然后,您需要在
UserControl
类中定义一个事件。这正是我所做的,非常感谢。干杯,伙计,这就是我一直在寻找的。干杯,伙计,这就是我一直在寻找的。