【问题标题】:How to bind color into my XAML如何将颜色绑定到我的 XAML
【发布时间】:2016-03-21 19:16:48
【问题描述】:

我有这个视图模型:

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 中?

【问题讨论】:

  • 我们在这里遗漏了很多代码。 Status 属性在哪里?你能发布你的视图模型和模型代码吗?

标签: wpf listview datagridviewcolumn


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多