Filter WPF-TreeView mit MVVM

Momentan habe ich ein TreeView, das die folgende Struktur hat:

        <TreeView ItemsSource="{Binding RootViewModels}"
                  FontSize="12">
            <TreeView.ItemContainerStyle>
                <Style TargetType="{x:Type TreeViewItem}">
                    <Setter Property="local:TreeViewItemBehaviour.IsBroughtIntoViewWhenSelected"
                            Value="True" />
                    <Setter Property="IsExpanded"
                            Value="{Binding IsExpanded, Mode=TwoWay}" />
                    <Setter Property="IsSelected"
                            Value="{Binding IsSelected, Mode=TwoWay}" />
                    <Setter Property="Visibility"
                            Value="{Binding IsVisible, Mode=TwoWay, Converter={StaticResource boolVisibilityConverter}}" />
                </Style>
            </TreeView.ItemContainerStyle>
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Children}">
                    <TextBlock Text="{Binding SomeDisplayText}" />
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>

wo RootViewModels und Children Typ ObservableCollection<SomeItemViewModel>

In die gleiche Ansicht habe ich ein ComboBox und ich möchte den ausgewählten Eintrag in diesem ComboBox zu dienen, wie die Kriterien zum filtern der TreeView durch. Ich habe eine ViewModelRepository das ist auch von Typ ObservableCollection<SomeItemViewModel> und ist von meinem IoC-container. Ich benutze diese um meine anderen ObservableCollections, dass in der XAML-Code oben.

Im moment bin ich versucht, in der Visibility jeder SomeItemViewModel in meinem ViewModelRepository, wenn ein Element in der ComboBox ausgewählt ist. Dies scheint zu funktionieren für alles unterhalb der ersten beiden Ebenen im Baum, aber nicht für die 2. Ebene (die erste Ebene wird die Wurzel, die immer sichtbar ist).

Aber es funktioniert nicht konsequent. Wenn ich den "filter" der richtige Knoten sind unsichtbar, aber wenn ich dann erweitern Sie einen Knoten, enthält "gefiltert" - Knoten, dann werden alle nachfolgenden "Filter" scheitern.

Ich habe gelesen, über das binden ItemsControls, um eine CollectionViewSource, um zu tun filtern, aber ich kann nicht finden, ein Beispiel dafür ist die Nutzung mit dem TreeView. Hat jemand irgendwelche Hinweise, wie ich Sie hier?

InformationsquelleAutor alimbada | 2010-10-29
Schreibe einen Kommentar