【问题标题】:TagVisualizer - when active - blocks Textbox touch Keyboard focus inside a ScatterViewItemTagVisualizer - 活动时 - 阻止 ScatterViewItem 内的文本框触摸键盘焦点
【发布时间】:2013-02-21 19:34:17
【问题描述】:

我有一个覆盖整个屏幕的TagVisualizer。嵌套在里面的是全屏ScatterView。在我的ScatterViewItems 之一里面是UserControl,它列出了n 个SurfaceTextBoxsUserControlScatterViewItems 始终可见。

例如

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

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

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

令人沮丧的是,我的代码适用于 Surface Input Simulator 工具,但不适用于设备本身。 (标签和触摸工具选项,不是鼠标)。

  • 标签被精确切割,不显示为斑点/手指 触及桌子。
  • 从 scatterview 到 librarybars 等都按预期工作。
  • 其他按钮和触摸元素都按预期工作
  • 每个标签的来源是 IsHitTestVisible=false 并且没有按钮等(只有一个椭圆显示标签在被识别时的位置)
  • 只有 键盘功能没有像我想象的那样运行 有意的。

我相信这背后的原因是标签捕获了鼠标上下文并且不会放手,并且默认的键盘功能不需要触摸输入而是单个鼠标事件。当标签被识别时,我将如何让键盘在SurfaceTextBox - 在UserControl 内工作?

我是 WPF 的新手,这个问题让我有点头疼……我查看了 SDK 示例,但找不到解决方案……我在做什么愚蠢或简单的事情没有做/错过了?

任何帮助将不胜感激:)

【问题讨论】:

    标签: c# wpf pixelsense


    【解决方案1】:

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

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

    平板电脑窗口默认键盘不适用于触摸输入,除非鼠标输入已触摸它(当没有其他输入时,最后一个和当前活动的触摸输入被提升为鼠标)。此键盘始终在未指定键盘且在控制面板中启用时显示。与TagVisualizers 一起工作很乏味,因为没有鼠标/触摸输入但有一个可识别的标签。这个标签会窃取联系人,直到你把它取下来。

    Surface 2.0 键盘不存在此问题。当您使用 Surface 2.0 键盘进行开发时,平板电脑键盘将取代它(很烦人),直到您通过 Surface Shell 运行您的软件...

    要开发您的程序并查看 Surface 2.0 键盘,您必须有一个用于 Surface 的开发环境并设置为 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 Surface 键盘

    附:我相信这是正确的......我仍在研究这个问题,如果我找到解决这个问题的方法,我会更新我的答案......

    编辑:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 1970-01-01
      相关资源
      最近更新 更多