C# :: Aufgabe #10 :: Lösung #1
6 Lösungen

#10
Color ValueConverter für XAML - Ampelstatus
Fortgeschrittener - C#
von pocki
- 28.08.2012 um 09:59 Uhr
Schreibe einen ValueConverter für XAML (WPF, Silverlight) wobei je nach Integer-Wert (Variable Zustand) eine Ellipse eine bestimmte Farbe zugewiesen wird.
Verwende folgenden XAML-Ansatz:
XML-Code
Wobei die Zuordnung wiefolgt sein soll:
C#-Code
Verwende folgenden XAML-Ansatz:

<Ellipse Fill={Binding Path=Zustand, Converter={StaticResource ResourceKey=StateToColorConverter}, ConverterParameter=Red;Orange;Green}/>
Wobei die Zuordnung wiefolgt sein soll:

Zustand=1; //Red Zustand=2; //Orange Zustand=3; //Green //Für alle anderen Zustandswerte: Transparent
#1

von pocki (4190 Punkte)
- 28.08.2012 um 19:30 Uhr
Hier ist mein Code dafür:
C#-Code

public class StateToColorConverter : System.Windows.Data.IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value == null || parameter == null || !(value is int)) { return System.Windows.Media.Brushes.Transparent; } string[] parColors = parameter.ToString().Split(';'); if (parColors.Length == 3) { System.Windows.Media.BrushConverter bc = new System.Windows.Media.BrushConverter(); int Zustand = (int)value; switch (Zustand) { case 1: //Da Parameter in diesem Fall ein string ist, muss dieser zuvor als zum Typ Brush konvertiert werden. return bc.ConvertFromString(parColors[0]) as System.Windows.Media.SolidColorBrush; case 2: return bc.ConvertFromString(parColors[1]) as System.Windows.Media.SolidColorBrush; case 3: return bc.ConvertFromString(parColors[2]) as System.Windows.Media.SolidColorBrush; default: break; } } return System.Windows.Media.Brushes.Transparent; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return new NotImplementedException(); } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1