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
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!"
Silverlight (aka Windows Phone 7) untersützt da aber nur "Default" und "Explizit" 😦
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"
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
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.