WPF UserControl Дочерний компонентный обработчик событий - PullRequest
1 голос
/ 24 марта 2020

У меня есть 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>

, и я хочу получить доступ к событию Click этой кнопки (или любого объекта) или любому событию из родительского объекта, который содержит 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>

Спасибо.

1 Ответ

0 голосов
/ 26 марта 2020

Это довольно просто. Просто поместите событие c publi в 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 UserControl :

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

XAML, где используется UserControl:

<local:UserControlButton ButtonClick="Some_event_handler_to_handle_Button_Click"/> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...