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

6 Lösungen Lösungen öffentlich
#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:
Quellcode ausblenden XML-Code
<Ellipse Fill={Binding Path=Zustand, Converter={StaticResource ResourceKey=StateToColorConverter}, ConverterParameter=Red;Orange;Green}/>


Wobei die Zuordnung wiefolgt sein soll:
Quellcode ausblenden C#-Code
Zustand=1; //Red
Zustand=2; //Orange
Zustand=3; //Green
//Für alle anderen Zustandswerte: Transparent
#1
vote_ok
von pocki (4190 Punkte) - 28.08.2012 um 19:30 Uhr
Hier ist mein Code dafür:
Quellcode ausblenden 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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben