我创建了一个新的类(派生自列表视图)。
这个列表视图是一个视图的一部分,这个视图有一个视图模型。这个视图模型有两个主要属性 - 1)myView(ICollectionView)...和isWritable(bool)。
每个列表视图项(列表视图中的行)都有一个控件模板,其中显示一组控件。
其中的几个控件的可见性是由"isWritable"属性决定的...通过FindAncestor方法。
问题在于当我们滚动这个列表视图时,一些使用"isWritable"属性来启用/禁用的控件被禁用,即使属性的值为"True"。
如果我删除回收,它可以正常工作...我认为这个问题是 - 因为它重复使用旧的容器,所以绑定没有完全使用FindAncestor发生。
如您所见,我在这里使用虚拟化..并且项目面板被回收。因此,我认为当我们重复使用项目面板时,数据绑定不会像预期的那样使用FindAncestor发生。
任何帮助将不胜感激!
这个列表视图是一个视图的一部分,这个视图有一个视图模型。这个视图模型有两个主要属性 - 1)myView(ICollectionView)...和isWritable(bool)。
每个列表视图项(列表视图中的行)都有一个控件模板,其中显示一组控件。
其中的几个控件的可见性是由"isWritable"属性决定的...通过FindAncestor方法。
问题在于当我们滚动这个列表视图时,一些使用"isWritable"属性来启用/禁用的控件被禁用,即使属性的值为"True"。
如果我删除回收,它可以正常工作...我认为这个问题是 - 因为它重复使用旧的容器,所以绑定没有完全使用FindAncestor发生。
如您所见,我在这里使用虚拟化..并且项目面板被回收。因此,我认为当我们重复使用项目面板时,数据绑定不会像预期的那样使用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>