2017-03-09 7 views
0

私は自分のWPF/VB Treeviewを正常に動作させてから、ライブソートとすべてのものを南に追加しようとしました。今私のアプリを実行すると、TreeViewコントロールに何も表示されません。ここに私がやったことだ:HierarchicalDataTemplateで並べ替えることはできません

追加このコンバータ:

<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> 

私はこれを持ってWindow.Resourcesで

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 

そして最後に、私はdeでCollectionViewSource.Sourceを微コードビハインドとして:

Dim cvs As CollectionViewSource = CType(TryFindResource("cvs"), CollectionViewSource) 
cvs.Source = Nodes 

は、上記の何が問題になっているのですか?

EDIT:

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コントロールがまだ空である:以下の私のコメントパー それが今、このですので、私は、コンバータの根性を削除しました。したがって、私の結論は、コンバータが問題の原因だが、私はそれを修正する方法を知らない。

答えて

0

と仮定すると、Nodesはプロパティです。このようなXAMLでソースのバインド

:、あなたのコードを

Dim cvs As CollectionViewSource = CType(TryFindResource("cvs"), CollectionViewSource) 
cvs.Source = Nodes 

コンバータC#で私がチェックし

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if (value == null) return null; 

     ICollectionView view = (ICollectionView) value ; 
     view.SortDescriptions.Add(new SortDescription(parameter.ToString(), ListSortDirection.Ascending)); 
     return view; 
    } 

<CollectionViewSource 
      x:Key="cvs" 
      Source="{Binding Nodes}" 
      IsLiveSortingRequested="True"/> 

は、これらの2行を削除します結構です。

+0

@AnjumSKhanを見ていただきありがとうございます。はい、ノードはNodeのObserveableCollectionです。これはプロパティID、ParentID、およびNameを持つクラスです。私は、コレクションが正しく充填されていることを知っています。悲しいことに、あなたの提案は何の違いもありませんでした。 TreeViewはまだ空です。 – SezMe

+0

ところで、私は問題がコンバーターにあると思うが、それは何が間違っているのかわからないし、それをどのように変更するか考えていないのでちょうど勘違いである。 – SezMe

+0

まだ空のツリービューが表示されます。私はまた、コンバータの他のバリエーションを試みました。たとえば、作成したビューにDirectCastを追加してObservableCollectionに戻してみましたが、どちらも役に立ちませんでした。 – SezMe

関連する問題