myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und XAML » Selection Mode Extended Listbox in Listbox
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Selection Mode Extended Listbox in Listbox

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Hydrogencarbonat Hydrogencarbonat ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.05.2018
Beiträge: 40


Hydrogencarbonat ist offline

Selection Mode Extended Listbox in Listbox

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi Leute,

ich habe folgendes Model und benutze WPF mit MVVM.

Ich habe eine ParentListe in der eine SubListe implementiert ist.
Am Ende wird im View quasi eine ListBox, mit einem ItemTemplate in der noch eine Listbox vorhanden ist,angezeigt
Wenn die ParentListbox nun mit ItemsSource befüllt wird dann hat die SubListbox mindestens 3 Elemente.

Wenn ich zum Beispiel nur eine ListBox (ohne ein Liste in dem Model) habe dann kann ich über die Property SelectionMode = "Extended" wunderbar verwenden.

Aber ich möchte eine Selection haben, die sich nur auf die SubElemente bezieht.
Bis jetzt kann nur in der SubListBox selektieren in der ich gerade der Mauszeiger ist.

Wie mache ich es, dass die SubListboxen als ganze Liste gesehen werden und man mit denen den SelectionMode = "Extended" ausführen kann?

C#-Code:
public class MainModel
        {
            public int? Index { get; set; }
            public List<SubModel> SubModels{ get; set; }
        }

        public class SubModel
        {
            public int? Index { get; set; }
            public string Type1 { get; set; }
            public string Type2 { get; set; }
        }

private ObservableCollection<MainModel> _parentCollection = new ObservableCollection<MainModel>();
        public ObservableCollection<MainModel> ParentCollection
        {
            get { return _parentCollection ; }
            set
            {
                _parentCollection = value;
                OnPropertyChanged(() => ParentCollection);
            }
        }


  private MainModel_selectedParent= new MainModel();
        public MainModelSelectedParent
        {
            get { return _selectedParent; }
            set
            {
                _selectedParent= value;
                OnPropertyChanged(() => SelectedParent);
            }
        }


  private SubModel _selectedSubModel= new SubModel();
        public SubModel SelectedSubModel
        {
            get { return _selectedSubModel; }
            set
            {
                _selectedSubModel= value;
                OnPropertyChanged(() => SelectedSubModel);
            }
        }

XML-Code:
<ListBox             ItemsSource="{Binding ParentCollection ,UpdateSourceTrigger=PropertyChanged}"
                                 SelectedItem="{Binding SelectedParent,UpdateSourceTrigger=PropertyChanged}"
                                 Style="{StaticResource ListBoxStyleV1}"
                                 ItemContainerStyle="{StaticResource ListBoxItemStyleV1}"
                                 ItemTemplate="{StaticResource TemplateV1}"
>
            </ListBox>



<DataTemplate x:Key="TemplateV1" >
        <Grid Background="Transparent"  HorizontalAlignment="Stretch" VerticalAlignment="Center" Height="Auto" Margin="3,0,3,0" >
            <Border Margin="2.2" Style="{StaticResource BorderStyleV2}">
                <ListBox         VerticalAlignment="Center" VerticalContentAlignment="Center" HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch"
                                 Width="Auto" Height="Auto"  Background="WhiteSmoke" Margin="0,0,0,0"
                                 ItemsSource="{Binding SubModel}"
                                 SelectedItem="{Binding DataContext.SelectedSubModel, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Blabla}}}"
                                 Style="{StaticResource ListBoxStyleV2}"
                                 ItemContainerStyle="{StaticResource ListBoxItemStyleV2}"
                                 ItemTemplate="{StaticResourceTemplateV2}"
>
                </ListBox>
            </Border>
        </Grid>
    </DataTemplate>
19.11.2019 10:45 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.423
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ein TreeView ist besser geeignet, um hierarchische Daten darzustellen. Dann kannst du ein  HierarchicalDataTemplate verwenden, um die Daten zu binden.
19.11.2019 12:35 Beiträge des Benutzers | zu Buddylist hinzufügen
Hydrogencarbonat Hydrogencarbonat ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.05.2018
Beiträge: 40

Themenstarter Thema begonnen von Hydrogencarbonat

Hydrogencarbonat ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,
vielen Dank für deine Antwort.
Ein TreeView ist vielleicht besser geeignet, aber damit kann ich meine Vorgaben zum View nicht so gestalten wie mit einer ListBox.

Wie ist denn möglich, dass die SubListboxen als ganze Liste gesehen werden und man mit denen den SelectionMode = "Extended" ausführen kann?
Unabhängig von der ParentListBox. Am besten man hat gar kein SelectedItem in der ParentListBox, sondern nur in den SubListboxen.

Gruß
19.11.2019 13:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.423
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Was willst du denn genau erreichen? Du kannst ja z.B. verhindern, daß die Einträge in der ersten Ebene selektiert werden können. Und die Mehrfach-Selektion geht auch mit dem TreeView.

Aber mit verschachtelten ListBoxen wirst du nicht zum Ziel kommen.
19.11.2019 13:20 Beiträge des Benutzers | zu Buddylist hinzufügen
Hydrogencarbonat Hydrogencarbonat ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.05.2018
Beiträge: 40

Themenstarter Thema begonnen von Hydrogencarbonat

Hydrogencarbonat ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Was ich genau erreichen will sieht so aus. Habe ich auch schon in Code umgesetzt. Nur die SubListBox selection fehlt...
Jedoch möchte ich wie schon geschrieben , das die Elemente von den SubListen quasi als eine Liste gelten und ich somit selektieren kann.

Geht das denn irgendwie ? Muss ich SelectionMode = "Extended" dafür selber nachbauen ?
Das würde sich aber als sehr aufwendig herausstellen... Die unteren Keyboard Modis bräuchte ich ja denn dafür hmm...

C#-Code:
                if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
                {
                }
                if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
                {
                }


mycsharp.de  Moderationshinweis von MrSparkle (19.11.2019 13:56):

Link auf Filehoster entfernt.
Bitte beachte  [Hinweis] Wie poste ich richtig?, Punkt 6.1 Bilder als Dateianhang hochladen

 
19.11.2019 13:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Hydrogencarbonat Hydrogencarbonat ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.05.2018
Beiträge: 40

Themenstarter Thema begonnen von Hydrogencarbonat

Hydrogencarbonat ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ok, das Bild ist nun richtig angehängt

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Hydrogencarbonat am 20.11.2019 11:45.

19.11.2019 14:01 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.423
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Du kannst den TreeView auch so stylen, daß die Inhalte nebeneinander statt untereinander dargestellt werden. Das wäre einfacher, als die Funktionalität des TreeViews nachzubauen.
19.11.2019 15:54 Beiträge des Benutzers | zu Buddylist hinzufügen
Hydrogencarbonat Hydrogencarbonat ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.05.2018
Beiträge: 40

Themenstarter Thema begonnen von Hydrogencarbonat

Hydrogencarbonat ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ok, vielen Dank.
Ich werde es dann mit dem TreeView umsetzen.

Beste Grüße
19.11.2019 16:38 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 8 Monate.
Der letzte Beitrag ist älter als 8 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 12.08.2020 02:04