问题描述
我有一个ItemsControl的ItemsSource(通过代码)将INotifyPropertyChanged对象(数据模型)的ObservableCollection(让它称为Items)。该数据模型具有PointCollection属性。视图(XAML)绑定到PolyLine上的PointCollection(在Points属性上)。
最初当我将此Items集合设置到ItemsControl.ItemsSource时,我可以看到这些行确实呈现。
问题:
当我将ItemsControl.ItemsSource设置为其他东西(如另一个没有任何行的ObservableCollection),那么将其设置回原始集合,即使集合SHOULD呈现,我无法看到这些行他们因为收集数据模型包含PointCollection。
从我能够研究的内容中,对于绑定到PointCollection有一些特别的困难。我想知道有没有人在之前和/或知道一个方法来解决这个问题(即无效控制以某种方式强制重画)?
谢谢。
Alvin,
我不知道如果将工作,但是您是否尝试创建一个新的PointCollection?:
PointCollection newCollection = new PointCollection(oldCollection);
myItemsControl.ItemsSource = newCollection;
如果这不起作用,也许可能需要使用更多基于WPF的语法: p>
myItemsControl.SetValue(ItemsControl.PointsProperty,newCollection);
我自己遇到了一些PointCollection问题,所以如果这些选项之一有帮助,让我知道。 / p>
I have an ItemsControl whose ItemsSource I assign (via code) an ObservableCollection (lets call it Items) of INotifyPropertyChanged objects (data model). This data model has a PointCollection property.
The view (XAML) binds to this PointCollection on a PolyLine (on the Points attribute).Initially when i set this Items collection to the ItemsControl.ItemsSource, i can see that the lines are indeed rendered.
Issue:When I set the ItemsControl.ItemsSource to something else (like another ObservableCollection which doesn't have any lines) THEN set it back to the original collection, I am unable to see the lines, even though the collection SHOULD render them because the collection data model's contain the PointCollection.
From what I was able to research, there is something particularly tricky about binding to a PointCollection. I was wondering if anybody has tackled this before and/or know of a way to get this to render (i.e. invalidate the control to somehow force a redraw)???
Thanks.
Alvin,
I have no idea if this will work but, have you tried creating a new PointCollection?:
PointCollection newCollection = new PointCollection( oldCollection );
myItemsControl.ItemsSource = newCollection;
If that doesn't work, maybe it may be necessary use a more WPF based syntax:
myItemsControl.SetValue( ItemsControl.PointsProperty, newCollection );
I am struggling with some PointCollection issues myself so if either of these options help, let me know.
这篇关于第二次绑定到PointCollection未被渲染的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!