Kolor zależny od danych

0

W jaki sposób mógłbym zrobić następującą rzecz, a mianowicie kolor textbox'a był zależny od wyświetlanego wyniku.

Mam w klasie

public enum Kolor { brak, czerwony, zielony};

public Kolor Kolor { get; set; }

Wartosc Kolor pobierana jest z bazy danych, czyli dla 1 - czerwony, dla 2 zielony
Następnie w XAML'u

 <Label Text="{Binding Kolor}" FontSize="14" TextColor="#FFFFFF" VerticalOptions="End" HorizontalOptions="EndAndExpand"/>

i chciałbym, żeby textcolor był równoważny z wyświetlanym kolorem w text.

0

Musisz sobie zrobić konwerter, który z twojego enuma Kolor wyprodukuje typ, którego oczekuje właściwość TextColor twojej kontrolki Label. Nie wiem w czym piszesz (WPF, UWP, Xamarin), bo w każdym się to będzie minimalnie różniło.

0

Znalazłem coś takiego ale nie działa mi

[ValueConversion(typeof(Colors), typeof(Brush))]
public class EnumToBrushConverter : IValueConverter {

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
        return (Brushes.Red);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
        throw new NotImplementedException();
    }
}
0

Konwerter:

public class EnumToBrushConverter : IValueConverter
{

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (!(value is Kolor))
            return null;

        var obj = (Kolor)value;
        if (obj == Kolor.czerwony)
            return Color.Red;
        else
            return Color.Green;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

XAML:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:App1"
             x:Class="App1.Page1">
  <ContentPage.Resources>
    <ResourceDictionary>
      <local:EnumToBrushConverter x:Key="EnumToBrushConverter" />
    </ResourceDictionary>
  </ContentPage.Resources>

  <Label x:Name="label1" Text="{Binding Kolor}" TextColor="{Binding Kolor, Converter={StaticResource EnumToBrushConverter}}" VerticalOptions="Center" HorizontalOptions="Center" />
</ContentPage>

Efekt:
ghr.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1