Как изменить цвет текста динамически зависит от значений, используя приложение xaml для UWP - PullRequest
0 голосов
/ 04 марта 2020

Xaml:

 <StackPanel Orientation="Horizontal">
   <TextBlock HorizontalAlignment="Right" VerticalAlignment="Center" Text="{x:Bind status}" Margin="30 5 0 0"  FontSize="15" Height="25" FontFamily="Praxis LT Regular" FontStyle="Normal"  />
   </StackPanel>

Я хочу изменить цвет, поскольку Статус зависит от значений. Например, если статус активен, то он должен быть зеленого цвета, иначе, если статус неактивен, он должен быть красного цвета, или же это должен быть оранжевый цвет.

Как применить текст для этих условий, используя xaml

1 Ответ

0 голосов
/ 04 марта 2020

XAML

  <StackPanel Orientation="Horizontal">
        <ComboBox x:Name="comboBox"/>
        <TextBlock HorizontalAlignment="Right" VerticalAlignment="Center"
                   Text="{x:Bind ((local:StatusVM)comboBox.SelectedItem).Status, Mode=OneWay}"
                   Foreground="{x:Bind ((local:StatusVM)comboBox.SelectedItem).GetColor(), Mode=OneWay}"
                   Margin="30 5 0 0" 
                   FontSize="15" Height="25" FontFamily="Praxis LT Regular" FontStyle="Normal"  />
    </StackPanel>

C#

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        comboBox.ItemsSource = new List<StatusVM>()
        {
            new StatusVM{Status=Status.Active},
            new StatusVM{Status=Status.Inactive},
            new StatusVM{Status=Status.Other},

        };
    }
}
public enum Status
{
    Active = 0,
    Inactive = 1,
    Other = 2
}
public class StatusVM
{
    public Status Status { get; set; }
    public SolidColorBrush GetColor()
        => Status == Status.Active
            ? new SolidColorBrush(Colors.Green)
            : Status == Status.Inactive
            ? new SolidColorBrush(Colors.Red)
            : new SolidColorBrush(Colors.Orange);
    public override string ToString() => Status.ToString();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...