UWP中的错误或我错过了什么

时间:2016-08-18 17:29:50

标签: c# events win-universal-app uwp windows-10-universal

我开始使用我的第一个通用Windows应用程序。我想要的第一件事就是将主要" Page"导航课程。出于简单的目的,我想添加一个RightTapped事件挂钩来显示实际页面显示的消息......

无论如何,我创建了一个全新的项目。创建了单个类MyPage

public class MyPage : Page
{
    public MyPage()
    {
        RightTapped += MyPage_RightTapped;
    }

    private async void MyPage_RightTapped(object sender, RightTappedRoutedEventArgs e)
    {
        var dialog = new MessageDialog("This page is " + GetType(), "What is my form");
        await dialog.ShowAsync();
    }
}

然后在默认的主窗体上,我从

更改了MainPage.xaml
<Page

<local:MyPage

在代码隐藏中,我改变了

public sealed partial class MainPage : Page

public sealed partial class MainPage

运行表单,它可以正常工作,右键单击键盘并显示消息。

现在问题。在主页面中,在Grid声明中,它使用背景定义...

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

如果我删除此颜色(实际颜色默认为&#34;#FFFFFFFF&#34;)

<Grid>

RightTapped甚至不再有效,这是唯一的变化。我把任何其他颜色的背景和RightTapped作品。

任何人都可以解释这个以及为什么它没有背景颜色而失败,这与使用背景不应该有任何关系吗?

1 个答案:

答案 0 :(得分:3)

这听起来像是记录在案的行为。 UIElement.RightTapped的文档包含一些相关提示:

  

对于触摸操作以及作为触摸操作后果的特定于交互的操作事件,必须对元素进行命中测试才能成为事件源并触发与操作关联的事件。 UIElement.Visibility必须为Visible。派生类型的其他属性也会影响命中测试可见性。有关详细信息,请参阅Events and routed events overview

来自Events and routed events overview: Hit testing and input events的详细信息:

  

有几个因素会影响命中测试,但您可以通过检查其IsHitTestVisible属性来确定给定元素是否可以触发输入事件。仅当元素符合以下条件时,此属性才会返回 true

     
      
  • 元素的Visibility属性值为Visible
  •   
  • 元素的背景填充属性值不是 null null Brush 值会导致透明度和命中测试不可见性。 (要使元素透明但也可以测试,请使用Transparent画笔而不是 null 。)
  •   

Grid&#39; Background property(继承自Panel)默认为 null ,使网格没有背景 XAML属性对命中测试不可见。