我创建了一个新类(从listview派生)。
此列表视图是视图的一部分,该视图具有视图模型。这个视图模型有两个主要属性 - 1)myView(ICollectionView)...和isWritable(bool)。
每个listview项(listview中的行)都有一个显示一组控件的控件模板。
其中一些控件的可见性由" isWritable"决定。属性...通过FindAncestor方法。
ISSUE ..当我们滚动此列表视图时,一些控件使用" 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>
答案 0 :(得分:1)
尝试VirtualizationMode="Standard"
。
解决了我遇到的问题:带有组合框和选择索引集的celltemplate。滚动时没有渲染选定的索引。
我不知道你的穿孔会不会得到同样的改善。