【发布时间】:2012-06-18 23:34:32
【问题描述】:
我创建了一个新类(从 listview 派生)。
这个列表视图是一个视图的一部分,它有一个视图模型。此视图模型有两个主要属性 - 1)myView(ICollectionView)...和 isWritable(bool)。
每个列表视图项(列表视图内的行)都有一个显示一组控件的控件模板。
这些控件的可见性由“isWritable”属性决定...通过 FindAncestor 方法。
问题是..当我们滚动这个列表视图时,一些使用“isWritable”属性来启用/禁用的控件被禁用,即使该属性的值为“True”。
如果我删除回收,它工作正常...我认为这个问题是 - 因为它重用旧容器..绑定没有完美地与 FindAncestor 发生。
如您所见,我在这里使用虚拟化......并且项目面板被回收。所以我认为,当我们重用 itempanel 时,使用 FindAncestor 并没有按预期进行数据绑定。
任何帮助将不胜感激!
<controls:ListViewMine
ItemsSource="{Binding Path=myView}"
VirtualizingStackPanel.IsVirtualizing="true"
ScrollViewer.IsDeferredScrollingEnabled="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"
IsSynchronizedWithCurrentItem="True"
SelectionMode="Single"
Template="{StaticResource myView2}"
AllowDrop="{Binding Path=isWritable}">
<controls:ListViewMine.View>
<controls:GridViewMine ScrollViewer.VerticalScrollBarVisibility="Visible" ColumnHeaderContainerStyle="{StaticResource listViewHeaderStyle}">
<GridViewColumn Width="110" />
<GridViewColumn Header="Name" CellTemplate="{StaticResource templateName}"/>
</controls:GridViewMine>
</controls:ListViewMine.View>
</controls:ListViewMine>
【问题讨论】:
-
去除回收的不利方面是什么?您在回收方面有性能问题吗?
-
然后找出问题。你说“如果我删除回收,它工作正常”
-
我的意思是说-如果我删除回收..我有性能问题..因为这会使性能降低大约 46%。但是如果我保留回收..我有上面提到的问题。
标签: wpf listview mode recycle virtualizingstackpanel