Laden...

Converter wird bei TextBlock nur 1x aufgerufen

Erstellt von MysticEmpires vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.133 Views
M
MysticEmpires Themenstarter:in
302 Beiträge seit 2004
vor 10 Jahren
Converter wird bei TextBlock nur 1x aufgerufen

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

6.911 Beiträge seit 2009
vor 10 Jahren

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!"

Z
322 Beiträge seit 2006
vor 10 Jahren

Nein

M
MysticEmpires Themenstarter:in
302 Beiträge seit 2004
vor 10 Jahren

Silverlight (aka Windows Phone 7) untersützt da aber nur "Default" und "Explizit" 😦

P
660 Beiträge seit 2008
vor 10 Jahren

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)

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

R
212 Beiträge seit 2012
vor 10 Jahren

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

5.299 Beiträge seit 2008
vor 10 Jahren

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.