【发布时间】:2011-02-16 22:12:47
【问题描述】:
我正在开发一个必须处理多个屏幕(目前是两个)的 WPF 应用程序。
一个视图可以在多个屏幕上打开,并且用户操作必须一致地反映在所有屏幕上。
为了实现这一点,对于给定类型的视图,将实例化单个 DataContext。然后,当一个视图显示在屏幕上时,唯一的 DataContext 会附加到它上面。所以,一个 DataContext,几个视图(相同类型的视图/xaml)。
到目前为止一切顺利。它在大多数情况下都非常有效。
我确实对依赖于 ItemsControl 的特定视图有疑问。这些 ItemsControl 用于显示在 ViewModel/DataContext(C# 代码)中动态构建的 UIElement。这些 UIElement 大多是 Path 对象。示例:
<ItemsControl ItemsSource="{Binding WindVectors}">
<ItemsControl.Template>
<ControlTemplate TargetType="{x:Type ItemsControl}">
<Canvas IsItemsHost="True" />
</ControlTemplate>
</ItemsControl.Template>
</ItemsControl>
这里,WindVectors 是 ObservableCollection<UIElement>。
第一次打开视图时,一切都很好。问题是当视图在另一个屏幕上打开时,所有 ItemsControl 都会从第一个屏幕中删除,并在第二个屏幕上显示一个。此视图上的其他 WPF 组件(例如 TextBlock)反应正常并显示在两个屏幕上。
任何帮助将不胜感激。
谢谢。
面料
【问题讨论】:
标签: wpf datacontext itemscontrol