日历日颜色取决于列表

时间:2014-11-18 11:29:26

标签: c# wpf xaml binding calendar

我正在考虑连接到包含两个属性的简单对象列表的日历:DateTime和string(包含十六进制颜色)。

是否可以从代码级别迭代到日期按钮或使用xaml中的某种数据模板来检查列表是否包含指定日期并将其颜色返回到边框?

我唯一发现的是Telerik解决方案,但它需要他们的控制库才能工作,我想知道是否还有其他选择。

1 个答案:

答案 0 :(得分:0)

使用日期为多值转换器着色,将当前日期按钮和我的彩色日期集合作为值

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        var result = "Transparent";

        if (!(values[0] is DateTime))
            return result;

        ObservableCollection<Log> collection = null;

        if (values[1] is ObservableCollection<Log>)
            collection = (ObservableCollection<Log>) values[1];

        if (collection != null)
        {
            foreach (var log in collection.Where(log => (DateTime) values[0] == log.Date.Date))
            {
                result = log.BackgroundColor;
                break;
            }
        }

        return new SolidColorBrush((Color) ColorConverter.ConvertFromString(result));
    }

<Style TargetType="{x:Type Border}">
<Setter Property="BorderBrush">
    <Setter.Value>
        <MultiBinding Converter="{StaticResource DayColorConv}" FallbackValue="Transparent">
            <Binding/>
            <Binding Path="CurrentLogs" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type panels:Schedule}}"/>
        </MultiBinding>
    </Setter.Value>
</Setter>