【问题标题】:How to capture tap event on specific button in user control from main form如何从主窗体捕获用户控件中特定按钮上的点击事件
【发布时间】:2016-04-07 00:29:08
【问题描述】:

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

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

这是我添加到用户控件本身以在单击关闭按钮时触发的代码。问题是当您单击用户控件上的 anywhere 时,它会触发,而不仅仅是关闭按钮。

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();
    }
}

【问题讨论】:

  • 请同时包含您的 XAML

标签: c# xaml event-handling


【解决方案1】:

行:

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

将 MainPage 的点击事件关联到 Page02_CloseButtonTapped 方法。所以它上面的任何点击事件都会触发该方法。

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

【讨论】:

  • 是的,我需要将它附加到用户控件内的特定控件“imgCloseButton”。
  • 但主窗体必须是能够感知事件的窗体,以便在单击该按钮时可以淡出用户控件
  • 这是正确答案。而不是他提到的那行,您想将其更改为 Page02.CloseButtonTapped += ... - 将 Page02 替换为页面名称。这将挂钩您的事件,而不是为一个事件创建新的处理程序。
  • @oppassum,你能看看我的新问题吗? stackoverflow.com/questions/36480998/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-02
  • 1970-01-01
相关资源
最近更新 更多