我使用附加行为从此处向GridView列添加排序:http://www.thomaslevesque.com/2009/08/04/wpf-automatically-sort-a-gridview-continued/
如果我不使用以下代码,它工作正常:
<ListView.Style>
<Style TargetType="ListView">
<Style.Triggers>
<Trigger Property="HasItems" Value="False">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListView">
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ListView.Style>
出现问题,使用以下步骤:
1)用项目填充列表,点击标题进行排序,排序标志符号出现
2)明确清单
3)再次填充列表,排序字形不可见
我在附加行为中订阅了SizeChanged事件,以便抓住当列表从空到满时重新绘制排序字形的时刻,但是GetAdornerLayer(columnHeader)返回null,我猜它还没有渲染,也没有adorner层。但
问题是,如何抓住正确的时刻来重绘丢失的字形(或者当存在时获取adorner图层)?
答案 0 :(得分:0)
我已将其整理出来,问题是,GridViewSort
具有属性SortedColumnHeaderProperty
,它持有对已排序列标题的引用。
因此,当列表被清除并再次填充时,会重新创建列标题,并且该引用不再用于渲染。