0
我有我的WPF/VB Treeview工作得很好,然後我試圖添加生活排序和萬物南下。現在當我運行我的應用程序時,沒有在TreeView控件中顯示。下面是我所做的:排序在HierarchicalDataTemplate不工作
添加該轉換器:
Public Class CollectionViewSorter
Implements IValueConverter
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert
Dim collection As System.Collections.IList = TryCast(value, System.Collections.IList)
Dim view As New ListCollectionView(collection)
Dim sort As New SortDescription(parameter.ToString(), ListSortDirection.Ascending)
view.SortDescriptions.Add(sort)
Return view
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.ConvertBack
Return Nothing
End Function
End Class
在我有這樣的Window.Resources:
<CollectionViewSource
x:Key="cvs"
IsLiveSortingRequested="True">
</CollectionViewSource>
<local:CollectionViewSorter x:Key="Sorter" />
這:
<TreeView.ItemTemplate>
<HierarchicalDataTemplate
ItemsSource="{Binding Path=ChildNodes, Source={StaticResource cvs}, Converter={StaticResource Sorter}, ConverterParameter=Name}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
最後,我是德將代碼隱藏的CollectionViewSource.Source細化爲:
Dim cvs As CollectionViewSource = CType(TryFindResource("cvs"), CollectionViewSource)
cvs.Source = Nodes
上面出現了什麼問題?
編輯: 每低於我的意見,我刪除了轉換器的膽量,因此,現在是這樣的:
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert
Dim collection As IList = TryCast(value, IList)
Return collection
End Function
和TreeView控件仍然是空的。因此,我的結論是,轉換器是問題的根源,但我不知道如何解決。
感謝您關注@AnjumSKhan。是的,Nodes只是Node的ObserveableCollection,它是一個具有屬性ID,ParentID和Name的類。我知道收集正在填補。可悲的是,你的建議並沒有改變。 TreeView仍然是空的。 – SezMe
順便說一下,我認爲問題出在轉換器上,但這只是一種預感,因爲我不知道它有什麼問題,也不知道如何改變它。 – SezMe
仍然給出一個空白的TreeView。我也嘗試了轉換器的其他變體。例如,我試圖在你創建的視圖上添加一個DirectCast到ObservableCollection中,但這也沒有幫助。 – SezMe