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

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
#2
vote_ok
von aheiland (650 Punkte) - 11.03.2015 um 12:58 Uhr
ich bin nicht ganz zufrieden mit der lösung

Quellcode ausblenden XML-Code
    <Window.Resources>
        <l:StateToColorConverter x:Key="StateToColorConverter"/>
    </Window.Resources>  
    <Grid>
        <Ellipse Height="100" Fill="{Binding Path=Zustand, Converter={StaticResource ResourceKey=StateToColorConverter }, ConverterParameter=Red;Orange;Green}"/>  
    </Grid>


Quellcode ausblenden C#-Code
    public class StateToColorConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            string[] colors = (parameter as string).Split(';');
            int state = value != null ? (int) value : colors.Length;            
            if (state == 0) return "Transparent";
            return colors[state-1];
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return null;
        }
    }

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

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