在 Page.xaml.cs 之外的 class 添加 UI 元素

Add UI element from class outside of Page.xaml.cs

我有一个很奇怪的问题,但不知何故我希望这是可能的。 但是看了很多之后我还是比较悲观的。

这就是我现在在这里问这个问题的原因。

我有一些 Lists/OberservableCollections 是我通过从串行端口读取而创建的。 现在我的应用程序中有一个调试屏幕,我只在其中显示这些列表的内容。 到目前为止,一切都很好。运行良好。

现在我有一个 settings/control 页面,我想在其中使用数据生成控制页面。 为此,我需要在接收中使用不同的数据流并为此构建控件。

我得到的流如下:

  1. 参数名称
  2. 最小值和最大值
  3. 设备上的当前值
  4. 测量参数的单位(如果有定义的话)

我创建了一个简单的例子来说明我希望它看起来像什么:

第一个流将是视图的第一列。第二个流用于决定滑块的最小值和最大值,或者我是否需要滑块或其他东西。然后我有第三个流来设置 sliders/controls 的当前值。最后一个流用于在行尾添加单元描述。

是否可以在我读取流后以某种方式创建控件而不在代码隐藏文件中创建它们? 我没有从我的视图开始读取操作,所以我不能直接使用文件隐藏代码。 也许我可以从其他地方调用我的代码隐藏文件中的函数? 或者我应该为此实施一个事件吗? (从未这样做过)

我能想到的唯一选择是在 xaml 中创建所有元素并通过绑定控制它们的可见性,但这完全不合理,因为我将有大约 100 行参数...

我真的有点无奈:/

此致, 丹尼尔

其实我已经找到答案了...

在写问题时,我记得可以使用事件处理程序。所以我查找了如何实现它们。

我很快就找到了答案,但每次我向 ObservableCollection 添加元素时都会触发 avent。我不想这样,因为我会有 100 个事件...

所以我在 SO 上找到了另一个 post 并实现了 ObservableCollection 的扩展版本。

可以找到here in this post

此扩展实现了一个 AddRange 选项。它只是清除集合并向其中添加另一个集合。有了这个 CollectionChanged 事件只触发一次,我很高兴 :D