C# :: Aufgabe #10 :: Lösung #3
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
#3

von mty (690 Punkte)
- 09.11.2015 um 17:13 Uhr

<Window x:Class="Ampelstatus.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:Ampelstatus" Title="MainWindow" Height="350" Width="250"> <Window.Resources> <local:AmpelstatusConverter x:Key="StateToColorConverter" /> </Window.Resources> <Grid> <StackPanel> <TextBox Height="25" TextAlignment="Center" Name="ZustandTextBox" /> </StackPanel> <Ellipse Height="250" Margin="0,20,0,0" Fill="{Binding Path=Text,ElementName=ZustandTextBox, Converter={StaticResource ResourceKey=StateToColorConverter}, ConverterParameter=Red;Orange;Green}"/> </Grid> </Window>

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Data; using System.Windows.Media; namespace Ampelstatus { public class AmpelstatusConverter : IValueConverter { object IValueConverter.Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { var p = parameter as string; string[] farben = p.Split(';'); SolidColorBrush solidColorBrush = new SolidColorBrush(); switch(value as string){ case "1": solidColorBrush.Color = (Color)ColorConverter.ConvertFromString(farben[0]); break; case "2": solidColorBrush.Color = (Color)ColorConverter.ConvertFromString(farben[1]); break; case "3": solidColorBrush.Color = (Color)ColorConverter.ConvertFromString(farben[2]); break; } return solidColorBrush; } object IValueConverter.ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return value; } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1