如何从主窗体中捕获用户控件中特定按钮上的点击事件

时间:2016-04-06 15:42:35

标签: c# xaml event-handling

我有一个Windows应用商店应用,它有一个主窗体和几个用户控件。在每个用户控件中,我有一个图像,当点击时,应该触发用户控件之外的故事板动画设置。

用于淡化用户控件IN的故事板,工作正常,但显然我需要在用户控件中单击关闭按钮时触发淡出OUT动画。

这里是我添加到用户控件本身的代码,当单击关闭按钮时触发该代码。问题是当你点击用户控件上的任何地方时它会被触发,而不仅仅是关闭按钮。

public sealed partial class Page02 : UserControl {

    public delegate void CloseButtonTappedHandler(object sender, TappedRoutedEventArgs e);
    public event CloseButtonTappedHandler CloseButtonTapped;

    public Page02() {
        this.InitializeComponent();
        this.imgCloseButton.Tapped += new TappedEventHandler(this.imgCloseButton_Tapped);
    }

    private void imgCloseButton_Tapped(object sender, TappedRoutedEventArgs e) {
        if (CloseButtonTapped != null) {
            CloseButtonTapped(sender, e);
        }
    }
}

主页面代码如下所示:

public sealed partial class MainPage : Page {

    public MainPage() {
        InitializeComponent();
        this.AddHandler(UIElement.TappedEvent, new TappedEventHandler(Page02_CloseButtonTapped), true);

    }

    private void textBlock1_Tapped(object sender, TappedRoutedEventArgs e) {
        MenuBar01.Visibility = Visibility.Visible;

        HideUserControl1.Begin();
        ShowUserControl2.Begin();
    }

    private void Page02_CloseButtonTapped(object sender, TappedRoutedEventArgs e) {
        HideUserControl2.Begin();
    }
}

1 个答案:

答案 0 :(得分:1)

该行:

this.AddHandler(UIElement.TappedEvent, new TappedEventHandler(Page02_CloseButtonTapped), true);

将MainPage的tapped事件与Page02_CloseButtonTapped方法相关联。因此,任何点击事件都会触发该方法。

我假设您打算将其附加到Page02控件上的CloseButtonTapped事件中吗?