如何在 WPF 的 itemtemplate 中为用户控件设置自定义位置?

问题描述

这是我上一个问题 regarding dependency properties 的后续问题。

我有一个自定义用户控件,用作 HMI 视图的状态指示器(一些同心圆,根据某些 PLC 状态数据具有不同颜色)。这些状态指示器从项目源获取它们的状态数据,在我看来,这应用于项目模板。按照 Gaz 的关于将 ItemsControl 与 ItemsSource 和 ItemsTemplate 一起使用的建议,我能够将数据集合干净地配置到自定义用户控件状态指示器,因此,我可以根据我的项目源在屏幕上绘制一堆状态指示器{ {1}} 在我的视图模型中可用。此类对象描述状态指示器的状态(接合、互锁等)以及组件 ID,该组件 ID 描述 P&ID 上的哪个项目为其显示信息。对于一些额外的上下文,因为我正在从 PLC 读取我的组件状态,所以在我的用例中读取整个状态数据数组很方便,无论是否为给定项目分配了组件。因此,我的 List <DigitalIOAssignment> 有一个属性,用于标识组件是否被实际使用并在数据模板中设置可见性标志。这一切正常。

我的问题: 我需要能够将 P&ID 上的每个状态指示器放置在任意位置,以便向用户传达有关给定组件的信息,该组件可能位于视图的任何位置。最初,我只是将新的 UserControls 拖到我的视图中,边距值是我希望显示对象的位置。为了将其与 itemssource 中的特定 List <DigitalIOAssignment> 对象相关联,我认为用一个字符串命名每个 UserControl 会很方便,我可以检查 itemsource 属性 DigitalIOAssignment 并且如果 UserControl 的名称等于 { {1}} 属性,以我为该特定用户控件对象指定的边距值绘制用户控件。这里的最终目标是能够相对快速地为 HMI 创建状态指示器; IE。将 StatusIndicator 拖到视图中,将用户控件命名为相同的组件 ID,并确保 DigitalIOAssignment.componentID 将正确的信息传送到视图。

componentID
List <DigitalIOAssignment>

显然,除了根据 StatusIndicatorDataTemplate 为每个 privateDigitalInputAssignment 绘制一个 ItemsControl 并在上述边距处绘制一个未连线的 StatusIndicator 之外,这并没有像所写的那样做任何事情。

我不知道如何从这里开始比较我放置在视图中的 UserControls:StatusIndicator 的 x:Name 和 itemssource,如果它与 componentID 属性匹配,还要分配上面列出的边距。我的直觉仍然说需要数据触发器,但我似乎无法弄清楚如何/在何处合并这些。有人可以给一些建议吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...