MS Surface Tag Visualizer украл контактные события

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

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

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

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

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

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

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

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

1 ответ

Решение

При использовании 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>
Другие вопросы по тегам