我开始使用我的第一个通用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作品。
任何人都可以解释这个以及为什么它没有背景颜色而失败,这与使用背景不应该有任何关系吗?
答案 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属性对命中测试不可见。