Laden...

ListBox und Split-Steuerelement geeignet? - Problembeschreibung

Erstellt von Stephan Gertens vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.366 Views
S
Stephan Gertens Themenstarter:in
5 Beiträge seit 2011
vor 12 Jahren
ListBox und Split-Steuerelement geeignet? - Problembeschreibung

Hallo zusammen!

Ich würde gerne ein Split-Fenster mit 2-3 Unterfenstern (je nach Auswahl, erläutere ich gleich), die horizontal angeordnet sind, gestalten. Soll heißen: Ich wähle ganz links im ersten Fenster eine Funktionalität, z.B.: Addition oder Subtraktion oder Multiplikation. In Abhängigkeit der Auswahl des Nutzers sollen nun im zweiten Fenster weitere Funktionalitäten erscheinen. Für einige Funktionen wird ein weiteres Fenster (3. Fenster, rechts daneben) benötigt; für andere wiederum nicht. Beispiel A: 1. Fenster: Addition, 2. Fenster: "unter 100", 3. Fenster: Summanden eingeben. Beispiel B: 1. Fenster: Multiplikation, 2. Fenster: Faktoren eingeben.

Wie kann ich meine Vorstellung am besten realisieren? Vielleicht mithilfe von ListBox und dem Split-Steuerelement? Fallen euch bessere Löungen ein?

vielen vielen lieben Dank,

Stephan

M
27 Beiträge seit 2010
vor 12 Jahren

Hallo,

deine Frage ist mir noch nicht ganz klar, aber vielleicht hilft dir ja der Link weiter: WPF-Containerelemente

S
Stephan Gertens Themenstarter:in
5 Beiträge seit 2011
vor 12 Jahren

Hi,

ich danke dir für deine Antwort und werde da nochmal schauen. Auf den ersten Blick sieht das Frame-Steuerelement gar nicht schlecht aus.

Ich beschreibe mein Problem nochmal genauer:
Ich möchte dem Nutzer in einem ersten Teilbereich meines Window eine Funktionsauswahl zur Verfügung stellen. Dort kann er nun eine Funktion auswählen und bestimmt damit, was in den weiteren Teilfenstern meines Window passiert. Ich brauche maximal 3 Teilfenster in meinem Window, manchmal kommt eine Funktion aber auch mit nur einem weiteren Teilfenster in meinem Window aus.

Nochmal die Beispiele:
Beispiel A.: Nutzer wählt in dem ersten Teilbereich des Window die Funktion "Addition" aus. Nun geht rechts daneben innerhalb des Window ein weiterer Teilbereich auf, dort kann der Nutzer wählen zwischen zwei weiteren Optionen "unter 100" und "über 100". Anschließend geht ein drittes Teilfenster in meinem Window auf, wo die Berechnung durchgeführt wird.

Beispiel B.: Nutzer wählt in dem ersten Teilbereich des Window die Funktion "Multiplikation" aus. Nun geht rechts daneben innerhalb des Wdinow ein weiterer Teilbereich auf, dieses Mal kann allerdings direkt hier die Berechnung durchgeführt werden, sodass der dritte Teilbereich des Window nicht gefüllt werden muss.

Ich hatte gedacht, ein Grid mit dem Split-Steuerelement in drei Spalten einzuteilen. Für Spalte 2 und 3 wird dann eine OberservableCollection<T> an eine ListBox gebunden, die erste Spalte wird einfach mit Buttons gestaltet. Und je nach gewähltem Button werden die OberservableCollections gefüllt.

Was meint ihr?
vielen Dank und Grüße,
Stephan

109 Beiträge seit 2011
vor 12 Jahren

Hallo,

also was du möchtest ist eigentlich klar. Obwohl die Frage eigentlich ziemlich einfach ist, ist die Antwort nicht ganz so leicht. Der Grund ist das dir die Wpf da zu viele Möglichkeiten bietet als DIE eine Lösung dir jetzt präsentieren zu können. Du kannst da deiner Fanatasie freien Lauf lassen 😉

So ein ähnliches UserControl wie du es brauchst habe ich beispielsweise mit einem StackPanel erledigt. Auf der linken Seite ist dann eine ListView, welcher ich eine ObservableCollection als ItemsSource hinzugefügt habe. In Abhängigkeit der Auswahl werden dann auf der rechten Seite in einer weiteren ListView die zugehörigen Items angezeigt (ähnlich wie in Expression Blend das Assets-Control).

Vielleicht kannst du damit ja was anfangen:

    
    <StackPanel Orientation="Horizontal">
        <ListView 
            ItemsSource="{Binding MainViewModel.ModuleService.AvailableGroups}" 
            SelectedValue="{Binding MainViewModel.ModuleService.SelectedGroup}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Label 
                        Content="{Binding}" 
                        HorizontalAlignment="Stretch">
                    </Label>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
        <ListView 
            ItemsSource="{Binding MainViewModel.ModuleService.CellItems}"
            SelectedItem="{Binding ParentBoard.SelectedSelectorCell}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <_Views:CellSelectorItemView/>
                </DataTemplate>
            </ListView.ItemTemplate>
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid/>
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
        </ListView>
    </StackPanel>

Aber wie gesagt ist das nur eine von mehreren Möglichkeiten. Mit einem Grid hätte ich das z.B. genauso hinbekommen.

Um Rekursion zu verstehen, muss man erst mal Rekursion verstehen, muss man erst mal Rekursion verstehen, ....

S
Stephan Gertens Themenstarter:in
5 Beiträge seit 2011
vor 12 Jahren

Hallo,

vielen Dank! Habe mir deinen Code als Vorlage genommen und ein Grid erstellt. Funktioniert prima.

Wie gesagt: super vielen Dank!

viele Grüße,
Stephan