Saya memiliki UserControl yang berisi katakanlah tombol (atau objek lainnya).

<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>

Dan saya ingin mengakses Acara Klik Tombol (Atau Objek apa pun) itu atau Acara apa pun dari induk yang berisi 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>

Terima kasih.

1
Allonios 24 Maret 2020, 14:04

1 menjawab

Jawaban Terbaik

Ini cukup mudah. Letakkan saja acara publik ke UserControl (kode di belakang) karena dapat diakses dari luar UserControl dan teruskan acara Klik dari tombol Anda.

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

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

XAML dari UserControl:

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

XAML tempat UserControl digunakan:

<local:UserControlButton ButtonClick="Some_event_handler_to_handle_Button_Click"/> 
0
Rekshino 26 Maret 2020, 09:32