在ListView没有项目后丢失装饰器层
本文关键字:ListView 项目 | 更新日期: 2023-09-27 18:28:49
我使用附加行为从这里向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,我想它还没有渲染,也没有装饰层。
问题是,如何抓住时机重新绘制缺失的字形(或者获得装饰层,如果它存在的话)?
我已经对它进行了排序,问题是GridViewSort
具有属性SortedColumnHeaderProperty
,该属性包含对排序列标题的引用。
所以,当列表被清除并再次填充时,列标题被重新创建,并且在渲染中不再使用该引用。