Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Converter wird bei TextBlock nur 1x aufgerufen
MysticEmpires
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

Converter wird bei TextBlock nur 1x aufgerufen

beantworten | zitieren | melden

Hi,

ich habe eine ListBox an der einen ObservableCollection gebunden ist. Das funktioniert wunderbar. Füge ich ein item hinzu wird es direkt angezeigt und entferne ich eines wird es auch direkt aus der Liste entfernt.

Jetzt habe ich einen Textblock den ich gerne Anzeigen möchte wenn besagt ObservableCollection keine Einträge mehr hat. Dies wollte ich über ein Binding machen und mit einen Converter sieht dann so aus:
<TextBlock Text="Teststring" Visibility="{Binding ListOfItems, Converter={StaticResource CollectionLengthToVisibilityInvert}}" />

Mein Converter sieht wie folgt aus:

    public class CollectionLengthToVisibility : IValueConverter
    {
        public Boolean Invert { get; set; }

        public object Convert(object value, Type targetType, object parameter, CultureInfo cultureInfo)
        {
            var collection = value as System.Collections.IEnumerable;

            if (collection == null)
                throw new ArgumentException("value");

            if(Invert)
                return collection.Cast<object>().Any() ? Visibility.Collapsed : Visibility.Visible;
            else
                return collection.Cast<object>().Any() ? Visibility.Visible : Visibility.Collapsed;   
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo cultureInfo)
        {
            throw new NotImplementedException();
        }
    }

Jedoch wird die Konvertierung nur 1x ausgelöst beim Laden der Seite. Sollte dies nicht wieder passieren wenn ich z.b ein Element hinzufüge oder löschen?

Gruß
Alex
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von MysticEmpires am .
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.819
Herkunft: Waidring

beantworten | zitieren | melden

Hallo MysticEmpires,

beim TextBlock afaik nicht, schau dir dazu UpdateSourceTrigger an.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
ZeroQool
myCSharp.de - Member



Dabei seit:
Beiträge: 322

beantworten | zitieren | melden

Nein
private Nachricht | Beiträge des Benutzers
MysticEmpires
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

beantworten | zitieren | melden

Silverlight (aka Windows Phone 7) untersützt da aber nur "Default" und "Explizit" :(
private Nachricht | Beiträge des Benutzers
ProGamer
myCSharp.de - Member



Dabei seit:
Beiträge: 660
Herkunft: NRW

beantworten | zitieren | melden

Beim TextBlock wird es nur einmal gemacht, du müsstest wenn dann das selbst im ViewModel machen. ansonsten kannste mal eine TextBox nehmen (readOnly, vllt noch das Style des TextBlocks) und der müsste dann das automatisch immer machen (ich bin mir aber nicht zu 100% sicher)

[Offtopic]
ProprtyChanged-UpdateSourceTrigger for silverlight[/offtopic]
MfG
ProGamer
private Nachricht | Beiträge des Benutzers
Robin0
myCSharp.de - Member



Dabei seit:
Beiträge: 212

beantworten | zitieren | melden

Ich empfehle dir da das Interface ICommand mal genauer unter die lupe zu nehmen, am besten sieht das ganze in verbindung mit MVVM aus. google search querry:(MVVM WPF C#) msdn hat d schöne beispiele
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5.299

beantworten | zitieren | melden

ehe du dir mit einem Converter einen abbrichst: Mach doch eine zusätzliche Property "IsEmpty" ins Viewmodel, und binde die Visibility da dran.
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers