Как связать цвет в мой XAML

У меня есть эта модель:

public class MyData
{
    public string Status;
    public StatusMsg StatusMessage;
    private Brush _statusBrushes;

    public Brush StatusBrushes
    {
        get
        {
            switch (StatusMessage)
            {
                case StatusMsg.Cancel:
                    return Brushes.Red;

                case StatusMsg.InProcess:
                    return Brushes.Blue;

                case StatusMsg.Done:
                    return Brushes.Green;

                default:
                    return Brushes.Green;
            }
        }
        set { _statusBrushes = value; }
    }

    public enum StatusMsg
    {
        Cancel,
        Done,
        InProcess,            
    }
}

Теперь у меня есть это GridViewColumn:

<GridViewColumn Width="180" Header="Status">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <TextBlock x:Name="Txt" Text="{Binding Status}" Foreground="Yellow" />
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

Так как вы можете видеть это GridViewColumn цвет желтый, и я хочу изменить его в соответствии с моим StatusMsg (мое перечисление), поэтому мой вопрос, как связать мой цвет в мой XAML?

1 ответ

Я бы порекомендовал создать IValueConverter который может преобразовать ваше значение перечисления в соответствующий цвет, и тогда ваша привязка будет выглядеть примерно так:

<GridViewColumn Width="180" Header="Status">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <TextBlock x:Name="Txt" Text="{Binding Status}" 
              Foreground="{Binding Path=StatusColor, Converter={StaticResource MyStatusColorConverter}" />
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

Вам, конечно, также потребуется создать ресурс, вот учебник, в котором появился быстрый поиск по bing: http://wpftutorial.net/ValueConverters.html

Другие вопросы по тегам