Laden...

Databinding: Bestimmte Elemente für eine ListBox auslassen / ausblenden?

Erstellt von Edward vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.169 Views
E
Edward Themenstarter:in
118 Beiträge seit 2007
vor 13 Jahren
Databinding: Bestimmte Elemente für eine ListBox auslassen / ausblenden?

Hallo zusammen,

ich habe auf meinem WPF (Windows-Anwendung) GUI mehrere ListBoxen die per DataBinding an Listen gebunden sind.
Nun möchte ich gerne, dass bestimmte Elemente wahlweise ein- oder ausgeblendet werden können.

Konkret: Ich habe zwei ListBoxen über die sich eine CheckBox befindet mit der der Benutzer steuern kann, ob auch gelöschte Elemente angezeigt werden sollen oder nicht. Jetzt möchte ich gerne je nach Zustand der CheckBox die als gelöscht markierten Elemente ein- bzw. ausblenden.

Hat jemand einen Tipp, wie ich das machen kann?
Geht das auch so wunderprächtig via DataTemplates oder muss ich die Listen dann schon per Hand füllen?

Vielen Dank schon einmal vorab.

Eddie

151 Beiträge seit 2009
vor 13 Jahren

Hallo Edward,

du hast sicher in irgendeiner Form deine Daten in einer ItemCollection und dann kannst du dort die Items sortieren.

Ist allerdings auch Grundlage und von daher verweise ich dich einfach mal auf die Forumsregeln 😕

trotzdem Grüßle
Jéré

E
Edward Themenstarter:in
118 Beiträge seit 2007
vor 13 Jahren

Hallo Jéré,

ich möchte die Elemente ja nicht sortieren sondern an Hand eines Flags bestimmen, ob sie überhaupt in den Listen auftauchen dürfen. Da ich die Daten komplett per DataBinding anzeigen lasse (keine ListBox wird manuell gefüllt) und noch ein Novize in puncto WPF und dessen DataBinding Mechanismen bin frage ich mich, ob ich auch per XAML festlegen kann, dass Elemente - die bestimmte Kriterien erfüllen - nicht in den Listen auftauchen dürfen.

Gruß,
Eddie

W
185 Beiträge seit 2009
vor 13 Jahren

Gib den Objekten IDS und dann kannst du in der Template z.B. ein "Tag" an die ID binden.

161 Beiträge seit 2007
vor 13 Jahren

Wieso lässt du das ViewModel nicht eine entsprechende Liste bereit stellen auf die du binden kannst und die bei Änderung des Flags aktualisiert wird?

bissal Pseudocode

class ViewModel {

  private bool _showDeleted;
  public bool ShowDeleted
  {
    get { return _showDeleted; }
    set 
    {
      if (_showDeleted != value) 
      {
         notifyPropertyChanged("ShowDeleted");
          _showDeleted = value;
         updateCollections();
      }  
     
    }

    private ObservableCollection<SomeData> _collection;
    public IEnumerable<SomeData> ListToBind
    {
       get { return _collection; }
    }

    private void updateCollections()
    {
         //update _collection;
     }  

}

"Eine wirklich gute Idee erkennt man daran,
dass ihre Verwirklichung von vorneherein ausgeschlossen erscheint."
(Albert Einstein)

S
489 Beiträge seit 2007
vor 13 Jahren

Was Du möchtest ist "Filtern". Ich selber habe es noch nicht verwendet, aber ich denke eine ListCollectionView wäre das richtige für Dich. Ansonsten ist kelkes Ansatz der richtige. Solche "Änderungen" sollten immer im ViewModel gemacht werden.

E
Edward Themenstarter:in
118 Beiträge seit 2007
vor 13 Jahren

Wieso lässt du das ViewModel nicht entsprechende Liste bereit stellen auf die du binden kannst und die bei Änderung des Flags aktualisiert werden?

Ich verwende nicht das MVVM Pattern...

Was Du möchtest ist "Filtern". Ich selber habe es noch nicht verwendet, aber ich denke eine ListCollectionView wäre das richtige für Dich.

Danke. Die werd ich mir mal anschauen. 🙂

151 Beiträge seit 2009
vor 13 Jahren

Achja, sorry Eddie, ich meinte auch eigentlich das Filtern und nicht das Sortieren.

Aber zu deiner Frage: Ohne (C#)Code wird es nicht gehen 😉

Grüßle
Jéré

161 Beiträge seit 2007
vor 13 Jahren

Wieso lässt du das ViewModel nicht entsprechende Liste bereit stellen auf die du binden kannst und die bei Änderung des Flags aktualisiert werden?

Ich verwende nicht das MVVM Pattern...

Dann würde ich es dir empfehlen. 😁
Sorry wie man es anders löst kann ich dir nicht sagen, MVVM ist doch defakto Pflicht für WPF-Anwendungen imho.

"Eine wirklich gute Idee erkennt man daran,
dass ihre Verwirklichung von vorneherein ausgeschlossen erscheint."
(Albert Einstein)

S
489 Beiträge seit 2007
vor 13 Jahren

MVVM ist doch defakto Pflicht für WPF-Anwendungen imho.

Nicht wirklich, man kann es auch anders machen, aber zur Zeit ist es das Pattern mit dem man am wenigstens Probleme bekommt. Außerdem sind viele Mechanismen, Klassen und Interfaces von Microsoft auf dieses Pattern hin zugeschnitten, schon deswegen ist es besser das MVVM Pattern vorzuziehen.

161 Beiträge seit 2007
vor 13 Jahren

Mir ist schon klar das man es anders machen kann, man kann es immer anders machen. Die Frage ist nur ob das so vernünftig ist. 😉

"Eine wirklich gute Idee erkennt man daran,
dass ihre Verwirklichung von vorneherein ausgeschlossen erscheint."
(Albert Einstein)