我正在为Microsoft Surface创建“Hello World”演示应用程序。这是XAML:
<s:SurfaceWindow x:Class="HelloWorld.SurfaceWindow1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="http://schemas.microsoft.com/surface/2008"
Title="HelloWorld"
>
<s:SurfaceWindow.Resources>
<ImageBrush x:Key="WindowBackground" Stretch="None" Opacity="0.6" ImageSource="pack://application:,,,/Resources/WindowBackground.jpg"/>
</s:SurfaceWindow.Resources>
<Canvas Background="{StaticResource WindowBackground}" s:Contacts.ContactDown="OnCanvasContactDown">
<Label Name="HelloWorldLabel" Visibility="Hidden">Hello, World!</Label>
</Canvas>
</s:SurfaceWindow>
这是OnCanvasContactDown处理程序:
private void OnCanvasContactDown(object sender, ContactEventArgs e)
{
// Get the position of the current contact.
Point contactPosition = e.Contact.GetPosition(this);
// Set the X and Y position of HelloWorldLabel
// in relation to the canvas.
Canvas.SetLeft(HelloWorldLabel, contactPosition.X);
Canvas.SetTop(HelloWorldLabel, contactPosition.Y);
// Make the label visible.
HelloWorldLabel.Visibility = Visibility.Visible;
}
问题是事件处理程序永远不会被调用。我在Visual Studio 2008中测试它。出现了Surface模拟器屏幕,当我点击它时,我得到了我“触摸”它的视觉反馈,但标签从未出现过。如果我在函数中的任何地方放置一个断点,它永远不会中断。
我做错了什么?
答案 0 :(得分:2)
解决。问题是我需要预先启动Surface Simulator并将Build CPU设置为x86。
答案 1 :(得分:0)
这是OnCanvasContactDown
的某些内容,实际上并没有被绑定为动作委托处理程序吗?在某处设置一些设置代码(或者可能不是 - 也许那是问题),它设置了事件的处理程序......
哦,标签可见性也设置为“隐藏” - 是默认属性还是持久属性?