3

我创建了一个新类(从 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>
4

1 回答 1

1

试试VirtualizationMode="Standard"

解决了我遇到的问题:带有组合框和 selectedindex 集的单元格模板。滚动时未呈现选定的索引。

我不知道你的性能是否会得到同样的改善。

于 2013-09-10T04:36:38.377 回答