我有一个包含一个按钮(或任何其他对象)的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>
谢谢。
这很容易。只需将公共事件放在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"/>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句