如何在扩展Button控件中抑制Click事件?

时间:2014-05-15 08:45:45

标签: c# wpf windows windows-runtime windows-store-apps

我的Windows Phone应用程序中有一个自定义按钮。该按钮会覆盖OnClick方法以阻止常规点击例程:

protected override void OnClick()
{
    if(ProgressBar != null
        && DelayDuration.HasValue
        && DelayDuration.Value.HasTimeSpan
        && DelayDuration.Value.TimeSpan > TimeSpan.Zero)
    {
        // Suppress the default click action
        return;
    }

    base.OnClick();
}

现在我需要将我的应用程序转换为Windows应用商店。但是Button类没有OnClick方法!如何从派生控件扩展Button行为?

1 个答案:

答案 0 :(得分:1)

Button有Click事件。 http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.controls.primitives.buttonbase.click.aspx

您可以在Windows Phone或Windows应用商店应用中覆盖按钮的OnTap方法

protected virtual void OnTapped(
  TappedRoutedEventArgs e
)

如果要阻止事件隧道,请设置e.Handled = true

  

出于所有实际目的,Tap和Click事件是等效的   对于按钮。

     

Click事件最初是在Silverlight for desktop中定义的   Windows和它仅为Button控件(及其衍生物)定义   比如HyperlinkBut​​ton)。您可以将Click事件视为   处理按钮按钮的“传统”方式。

     

Tap事件已添加到Windows Phone 7.1(Mango)中的框架中。   Tap在UIElement类中定义,该类是许多的父级   控件类型。您可以在TextBlock中处理Tap事件,Image,   和许多其他控件。 Button也是UIElement的子类,   因此也可以接收Tap事件。按钮是多余的   可以同时接收点击和点击事件。