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

von kjaenke (1140 Punkte)
- 08.11.2017 um 08:09 Uhr

<Window x:Class="Exercise_10.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:Exercise_10" mc:Ignorable="d" Title="MainWindow" Height="350" Width="329.045"> <Window.Resources> <local:AmpelstatusConverter x:Key="StateToColorConverter" /> </Window.Resources> <Grid> <StackPanel> <TextBox Height="25" TextAlignment="Center" Name="StatusInputBox" /> </StackPanel> <Ellipse Height="250" Margin="0,44,0,25" Fill="{Binding Path=Text, ElementName=StatusInputBox, Converter={StaticResource ResourceKey=StateToColorConverter}, ConverterParameter=Red;Orange;Green}" /> </Grid> </Window>

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