Hi ShannonZhou,
首先你需要改变在usercontrol中的button控件的fieldmodify属性为public, 然后改变button控件的事件胃public, 像这样:
<StackPanel Width="80" Height="80">
<Button x:Name="btn1" HorizontalAlignment="Center" x:FieldModifier="public" VerticalAlignment="Center" Width="50" Content="click" Height="30" Click="btn1_Click"></Button>
</StackPanel>
public partial class UserControl3 : UserControl
{
public UserControl3()
{
InitializeComponent();
}
public void btn1_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("usercontrol click event!");
}
}
然后你就可以在主窗体中先remove掉button控件原有的事件, 然后在添加一个新的事件。
<StackPanel>
<Button x:Name="btn1" Width="50" Height="30" Content="click" Click="btn1_Click"/>
<Button x:Name="btn2" Width="50" Height="30" Content="click1" Click="btn2_Click"/>
<local:UserControl3 x:Name="us" Margin="5" Width="100" Height="100" ></local:UserControl3>
</StackPanel>
private void btn1_Click(object sender, RoutedEventArgs e)
{
us.btn1.Click -= us.btn1_Click;
us.btn1.Click += btn2_Click;
}
private void btn2_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("main windows click event");
}
Best Regards,
Cherry
MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to
MSDN Support, feel free to contact MSDNFSF@microsoft.com.