Binden möchten ein HierarchicalDataTemplate die ItemsSource-Eigenschaft an ein CollectionViewSource (ausführen, Gruppierung und Filterung)

Das problem: Wir möchten, binden Sie ein HierarchicalDataTemplate die ItemsSource-Eigenschaft an ein CollectionViewSource durchzuführen, Gruppierung und Filterung.

Hintergrund: Die ursprüngliche Frage, die wir arbeiteten, hatte zu tun mit der Filterung ein TreeView. Insbesondere haben wir festgestellt, dass mit einer CollectionViewSource filtern gearbeitet, aber verursacht das TreeView-Knoten zu reduzieren. Es ist wahrscheinlich, weil der Blick auf die Refresh-Funktion regeneriert die Liste der Objekte, die bewirkt, dass die Strukturansicht regenerieren Knoten, wodurch die ursprüngliche Knoten' expansion Staaten verloren. Wir haben dieses Problem gelöst, indem Sie eine Klasse zu schreiben, die ähnlich ist zu CollectionViewSource erhält jedoch die Ansicht durch Bearbeiten der Liste Objekt in Ort, so dass, wenn es änderungen aufgrund der Filterung, die damit verbundenen TreeView-Knoten nicht zerstört.

Dies funktionierte perfekt für uns und wir würden Sie gerne auf tieferen Ebenen in unserem TreeView, bringt uns zurück zu unserem problem. Derzeit haben wir ein HierarchicalDataTemplate, die wie folgt aussieht:

<HierarchicalDataTemplate

    x:Key="tableTemplate"

    ItemsSource="{Binding Path=DataItems}"

    ItemTemplateSelector="{StaticResource tableGroupsTemplateSelector}"

    >

Statt, wir wollen, dass es sich so Verhalten:

<HierarchicalDataTemplate

    x:Key="tableTemplate"

    ItemTemplateSelector="{StaticResource tableGroupsTemplateSelector}"

    >

    <HierarchicalDataTemplate.ItemsSource>

        <Binding>

            <Binding.Source>

                <CollectionViewSource

                    Source="{Binding Path=DataItems}"

                    />

            </Binding.Source>

        </Binding>

    </HierarchicalDataTemplate.ItemsSource>

Leider ist dieser Ansatz nicht zu funktionieren scheint. Von dem, was wir sagen können, die Bindung innerhalb des CVS wird nie ausgelöst; keine Bindung-Fehler ausgelöst werden; wir haben versucht, das anbringen einer Konverter und setzen Sie einen Haltepunkt, aber der Haltepunkt nie erreicht. Wir haben auch versucht verschiedene andere Lösungen, einschließlich: mit RelativeSource, bewegen Sie die CollectionViewSource in den template-Ressourcen, und die Einbeziehung TreeViewItem ist in die Vorlage. Jedoch hat nichts geklappt.

Nebenbei, mir ist klar, dass eine ViewModel-Ansatz ermöglichen würde Filterung. Allerdings bin ich an einer Stelle in unserem Entwicklungszyklus, wo kann ich nicht machen, die Art von Veränderung, ich bin auf der Suche nach alternativen, wie die CollectionViewSource Ansatz.

Jede Hilfe, die Sie geben können wäre dankbar.

Dank,

-Craig

InformationsquelleAutor | 2009-05-12
Schreibe einen Kommentar