MS Surface Tag Visualizer украл контактные события - PullRequest
1 голос
/ 30 апреля 2010

Я борюсь с элементом управления TagVisualizer в проекте MS Surface. Теоретически управление кажется великолепным, позволяя вам реагировать на входные данные от физических объектов реального мира

Проблема в том, что элемент управления покрывает весь экран (поскольку я хочу захватывать теги на весь экран), и поэтому никакие другие элементы управления в моем приложении не будут получать сенсорные события. (Если только они не являются прямыми восходящими в визуальном дереве).

В моем приложении я хочу использовать подход типа «слой», где каждый слой может реагировать на (контактный) ввод:

Window
  `- Grid
      `- LayersPanel
          `- TagVisualizer
          `- Layer 1
          `- Layer 2
          `- Layer 3
          `- Layer 4    

Теперь не имеет значения, куда я помещаю визуализатор тегов, он всегда будет красть события контактов из всех или некоторых других слоев. (из-за характера RoutedEvents )

Мне кажется, что элемент управления на практике совершенно бесполезен, поскольку он всегда будет мешать другим элементам управления вашего приложения. Что мне здесь не хватает?

Итак, мои вопросы : Есть предложения о том, как обойти это? Кто-нибудь использовал TagVisualizer в подобном сценарии? Если да, то как ты решил это?

Кстати, все слои работают нормально, так как они будут красть только события, которые находятся непосредственно над их подэлементами (остальная часть слоя невидима для тестирования попаданий)

1 Ответ

7 голосов
/ 30 апреля 2010

При использовании TagVisualizer, хитрость заключается в том, что вы должны поместить в него все свое приложение. Например:

<s:TagVisualizer>
  <s:TagVisualizer.Definitions>
    <s:ByteTagVisualizationDefinition Value="00" />
  </s:TagVisualizer.Definitions>
  <s:ScatterView>
    <s:ScatterViewItem />
    <s:ScatterViewItem />
    <s:ScatterViewItem />
    <s:ScatterViewItem />
  </s:ScatterView>
</s:TagVisualizer>
...