0
我使用附加的行爲增加從這裏排序,以GridView的列後:http://www.thomaslevesque.com/2009/08/04/wpf-automatically-sort-a-gridview-continued/失去裝飾器層的ListView沒有項目
它工作正常,如果我不使用下面的代碼:
<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,我想它尚未呈現,沒有裝飾層尚未。
問題是,如何抓住正確的時刻重畫缺失的字形(或者在裝飾層存在時)?
您可以嘗試*等待渲染('Dispatcher.Invoke(...,DispatcherPriority.Render);')。但我認爲排序與'ListCollectionView'本身有關,所以簡單地設置排序就足夠了。你如何清除*清單?通過調用Clear()來做什麼?也許你不小心清理排序。 – Sinatr 2014-11-03 11:03:31
我通過調用清除清除列表,排序不清除 - 它仍然存在,問題只與重新繪製。 – Giedrius 2014-11-03 11:08:40
我已經整理出來了,問題是,GridViewSort有屬性SortedColumnHeaderProperty,它持有對已排序列標題的引用。所以當列表被清除並且會被再次填充時,列標題被重新創建,並且該引用不再用於渲染。 – Giedrius 2014-11-03 11:16:59