首页 > 解决方案 > 如何识别标签是否添加到像素感?

问题描述

我有一个像素感桌面,想识别是否添加了标签。由于硬件很旧,很难找到信息。在这里,我可以找到一个如何识别标签的示例,但只能使用预定义的值:

<s:TagVisualizer Name="TagVisualizer">
    <s:TagVisualizer.Definitions>
        <s:ByteTagVisualizationDefinition Value="192"
           Source="SampleTagVisualization.xaml"
           UsesTagOrientation="True"
           TagRemovedBehavior="Fade"
           PhysicalCenterOffsetFromTag="7.5,4.5"/>
    </s:TagVisualizer.Definitions>
</s:TagVisualizer>

我只想引发一个事件,如果添加了标签(无论值)然后与数据库条目匹配。这应该同时处理至少两个对象。在TagVisualizer课堂上,我发现了以下事件:

public event TagVisualizerEventHandler PreviewVisualizationInitialized;
public event TagVisualizerEventHandler VisualizationAdded;
public event TagVisualizerEventHandler PreviewVisualizationMoved;
public event TagVisualizerEventHandler PreviewVisualizationRemoved;
public event TagVisualizerEventHandler VisualizationInitialized;
public event TagVisualizerEventHandler PreviewVisualizationAdded;
public event TagVisualizerEventHandler VisualizationMoved;
public event TagVisualizerEventHandler VisualizationRemoved;

但就我所尝试的而言,VisualizationAdded只有在存在一些 TagVisualizer 定义的情况下才会引发该事件。

标签: wpfpixelsense

解决方案


您可以在任何元素上使用 ContactDown 事件来查看任何表面输入。IIRC,该事件有一个 Contact.ContactType 属性,它应该告诉您它是一个标签,然后 Contact.TagValue 告诉您该值。这甚至和它的对等点的行为与 MouseDown 和它的对等点相同。

对于 TagVisualizer,这样做的目的是简化许多与标签一起工作所需的常用代码,而不仅仅是检测它们。一般来说,您需要一个数据库来定义您关心的标签值以及这些标签相对于物理对象的位置。一个好的做法是查询您的数据库以获取所有这些信息,然后将 TagVisualizer 配置为留意您关心的所有这些标签。配置大量定义不会对性能产生明显影响。

顺便说一句,对于 API 文档,您应该会在 SDK 安装中看到一个 .chm 文件,它可以让您离线阅读文档,因为它们不再可以在线访问。

这都是凭记忆,所以我希望它有点准确和有帮助!

(免责声明:Surface 开发平台的前 PM)


推荐阅读