wpf - 如何识别标签是否添加到像素感?
问题描述
我有一个像素感桌面,想识别是否添加了标签。由于硬件很旧,很难找到信息。在这里,我可以找到一个如何识别标签的示例,但只能使用预定义的值:
<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 定义的情况下才会引发该事件。
解决方案
您可以在任何元素上使用 ContactDown 事件来查看任何表面输入。IIRC,该事件有一个 Contact.ContactType 属性,它应该告诉您它是一个标签,然后 Contact.TagValue 告诉您该值。这甚至和它的对等点的行为与 MouseDown 和它的对等点相同。
对于 TagVisualizer,这样做的目的是简化许多与标签一起工作所需的常用代码,而不仅仅是检测它们。一般来说,您需要一个数据库来定义您关心的标签值以及这些标签相对于物理对象的位置。一个好的做法是查询您的数据库以获取所有这些信息,然后将 TagVisualizer 配置为留意您关心的所有这些标签。配置大量定义不会对性能产生明显影响。
顺便说一句,对于 API 文档,您应该会在 SDK 安装中看到一个 .chm 文件,它可以让您离线阅读文档,因为它们不再可以在线访问。
这都是凭记忆,所以我希望它有点准确和有帮助!
(免责声明:Surface 开发平台的前 PM)
推荐阅读
- single-page-application - SPA AEM 中特定区域所需的动态标头体验片段
- php - 试图获取非对象的属性“id_pembelian”
- javascript - 如何使机器人加入机器人所在的所有服务器中的语音通道?
- typescript - Mongoose findByIdAndUpdate 不更新文档
- python - 如何向 Django 的默认用户模型添加另一个字段。例如,添加一个名为 matricule 的字段
- react-window - react-window-infinite-loader 在加载更多项目时滚动到顶部
- arrays - 将不同工作表中(满足条件)的列和标签名称过滤到 2 列中,没有空格
- reactjs - 来自 Uint8Array 的 ImageData 没有画布
- php - 使用 codeigniter 上的 htaccess 根据参数更改 url
- python - 在 python 中向所有人分享谷歌电子表格