WPF Canvas - Visual Studio就像拆分视图一样

时间:2012-12-15 19:16:43

标签: wpf canvas view split

我正在开发一个应用程序,它在wpf画布中显示大量(10000多个元素)图形。 我想要一个像Visual Studio这样的功能,当你可以分割编辑器的视图时(这样我就可以同时查看同一个图形的两个远端部分)。

我有一些限制:

  • 图形元素的数据绑定(创建绑定)使得大图的加载非常慢,所以我不使用MVVM,“VM”知道视图并在需要时直接更新
  • 画布的子项是frameworkelements,因为我使用Tag属性
  • 由于图元素的数量,我不想为拆分视图的两个部分的每个元素保留两个不同的视图

所以它应该像在不同的地方显示同一画布的多个部分。你不能在WPF中为FrameworkElements设置两个父项,所以最简单的方法是不可能的:(

我有什么选择?我应该重新考虑我的约束,还是有一些解决方法?

如果您需要更多详细信息,请告诉我(这是一个很大的应用程序,因此我无法向您提供所有信息)。

编辑:由于我需要正确的输入事件通知,因此无法使用可视化画笔进行复制,因此两个视图都必须是可编辑的。

1 个答案:

答案 0 :(得分:2)

选项:

  • 将相同数据绑定到两个控件。
  • 使用可视画笔并在真实控件上复制输入。
  • 创建一个自定义图形控件,可以一次输出图形的两个部分。

如果绑定到两个控件太慢,那么我认为您需要重新考虑您的应用程序。事实上,您一次显示如此多的数据,您需要双视图来查看单独的部分是令人不安的。那会引起一面红旗。红旗会通知你,“我需要什么,我拥有的是不同的。”你应该回到绘图板,找出你真正需要的东西。

否则,最好创建自定义控件。即使您只需要显示小部分,图形也会完整呈现。如果你有自己的自定义控件,你可以通过一次只渲染可见部分并在控件内分割来加速整个应用程序。