【问题标题】:WPF UserControl Child Component Event HandlerWPF UserControl 子组件事件处理程序
【发布时间】:2020-03-24 11:04:03
【问题描述】:

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

<UserControl x:Class="StackOverFlowQuestion.UserControlButton"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:local="clr-namespace:StackOverFlowQuestion"
             mc:Ignorable="d"
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Button
            x:Name="Button1"
            Content="Click me for testing"/>
    </Grid>
</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>

谢谢。

【问题讨论】:

  • 如何以及从哪里访问它? XAML?还是代码?
  • 访问它是从xaml代码中添加事件处理程序的意思
  • 无法从窗口的 XAML 标记中将事件处理程序连接到在 UserControl 中定义的 Button。然后,您需要在 UserControl 类中定义一个事件。
  • 这正是我所做的,非常感谢。

标签: c# wpf xaml events


【解决方案1】:

这很容易。只需向UserControl(后面的代码)添加一个公共事件,因为它可以从 UserControl 外部访问,并从您的按钮转发 Click 事件。

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

    private void UsrCtlButton_Click(object sender, RoutedEventArgs e)
    {
        ButtonClick?.Invoke(sender, e);
    }
}

UserControl 的 XAML:

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

使用UserControl 的XAML:

<local:UserControlButton ButtonClick="Some_event_handler_to_handle_Button_Click"/> 

【讨论】:

  • 干杯,这就是我一直在寻找的。​​span>
猜你喜欢
  • 2017-12-16
  • 1970-01-01
  • 2011-04-09
  • 2017-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多