TagVisualizer - 活动时 - 阻止文本框触摸ScatterViewItem内的键盘焦点

时间:2013-02-20 14:00:49

标签: c# wpf pixelsense

我有TagVisualizer覆盖整个屏幕。嵌套在里面的是全屏ScatterView。我的ScatterViewItems其中一个是UserControl,其中列出了SurfaceTextBoxs的n个数量。 UserControlScatterViewItems始终可见。

E.g。

<TagVisualizer Panel.ZIndex="1">
<TagVisualizer.Definitions>
...
<TagVisualizer.Definitions>

<ScatterView Panel.ZIndex="2">
<ScatterViewItem />
<ScatterViewItem />
<ScatterViewItem >
<UserControl />
</ScatterViewItem>
...
</ScatterView>
</TagVisualizer>

我遇到的问题是,当桌面上没有识别标签时,Touch输入正常工作,键盘弹出并正常运行。但是,当桌面上的标签被识别时,键盘不再聚焦在文本块上,并且不会对用户触摸输入作出反应。我认为分层内容zindex会解决这个问题,但我错了......

令人沮丧的是,我的代码适用于Surface输入模拟器工具,但不适用于设备本身。 (标记和触摸工具选项,而不是鼠标)。

  • 标签是精确剪切的,不会显示为斑点/手指 接触桌子。
  • 从中拖放内容 scatterview到librarybars等都按预期工作。
  • 其他按钮和触控元素均按预期工作
  • 每个标签的来源是IsHitTestVisible = false并且没有按钮等(只有一个Ellipse显示标签在被识别时的位置)
  • 只有 键盘功能没有像我想象的那样起作用 意图。

我认为这背后的原因是由于Tag捕获鼠标上下文并且不会松开,默认的键盘功能不需要触摸输入而是单个鼠标事件。如何在SurfaceTextBox - UserControl内部 - 当识别标签时,如何使键盘工作?

我是WPF的新手,这个问题让我头疼不已......我看过SDK示例,我找不到解决方案..我有什么蠢事或是一些简单的不做/错过的东西?

任何帮助都会受到赞赏:)

1 个答案:

答案 0 :(得分:1)

在研究了有关Surface 2.0程序的键盘结构的更多信息后,再次按照购物车示例,您必须使用Surface 2.0键盘,而不是Tablet 2键盘(您可以在控制面板中打开/关闭键盘)。我认为两个键盘都可以运行相同,我犯了一个愚蠢的错误。不过。

Surface 2.0键盘接受触摸输入并与TagVisualizers配合使用。这是因为键盘绑定到某些SurfaceTextBoxes并且即使鼠标没有点击它也会触摸输入。

平板电脑窗口默认键盘不能与触摸输入一起使用,除非鼠标输入触摸它(当没有其他输入时,最后和当前活动触摸输入被提升为鼠标)。当没有指定过度键盘并且在控制面板中启用时,此键盘始终显示。使用TagVisualizers时这很麻烦,因为没有鼠标/触摸输入但是有一个识别的标签..此标签会窃取联系人,直到您将其取下。

Surface 2.0键盘不存在此问题。当您使用Surface 2.0键盘进行开发时,Tablet键盘将会占据它的位置(烦人),直到您通过Surface Shell运行软件...

要开发程序并查看Surface 2.0键盘,您必须为Surface设置开发环境。例如。在三星SUR40等上开发

  1. http://msdn.microsoft.com/en-us/library/ff727875.aspx在Windows模式下测试
  2. http://msdn.microsoft.com/en-us/library/ff727840.aspx测试/调试表面
  3. http://msdn.microsoft.com/en-us/library/ff727766.aspx曲面键盘
  4. P.S。我相信这是正确的......我仍在研究这个问题,如果我找到解决这个问题的方法,我的答案会更新......

    编辑:

    要扩展此答案..您应该编写应用程序以使用Surface Shell,通过启动程序,您应该从可用应用程序的选择中启动应用程序和/或如果您正在编程,将shell设置为一种应用程序模式对于商店环境。