如何给绑定的listview绑定背景色?

问题描述 投票:0回答:1

我们如何在这里绑定颜色?

DayItems.Add(new CustomCalendarViewDayItem(DateTime.Now.AddDays(1), "Tommorrow"));
binding
1个回答
1
投票

您可以在我对原始问题的回答中的 CustomCalendarViewDayItem 上添加一个属性:

public record CustomCalendarViewDayItem
{
    public CustomCalendarViewDayItem(DateTime dateTime, string text)
    {
        DateTime = dateTime;
        Text = text;
    }

    public DateTime DateTime { get; }

    public string Text { get; }

    public Brush Background { get; }
}

并更改创建列表的方式:

private void CalendarViewControl_CalendarViewDayItemChanging(CalendarView sender, CalendarViewDayItemChangingEventArgs args)
{
    if (DayItems.Where(x => DateOnly.FromDateTime(x.DateTime) == DateOnly.FromDateTime(args.Item.Date.Date))
            .Select(x => x) is IEnumerable<CustomCalendarViewDayItem> dayItems)
    {
        args.Item.DataContext = dayItems;
    }
}

CalendarViewDayItemStyle
应该是这样的:

<CalendarView.CalendarViewDayItemStyle>
    <Style TargetType="CalendarViewDayItem">
        <Setter Property="FontSize" Value="10" />
        <Setter Property="FontWeight" Value="ExtraLight" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <Grid
                        Margin="5"
                        VerticalAlignment="Center">
                        <ListView ItemsSource="{Binding}">
                            <ListView.ItemTemplate>
                                <DataTemplate x:DataType="local:CustomCalendarViewDayItem">
                                    <ListViewItem
                                        Background="{x:Bind Background}"
                                        Content="{x:Bind Text}" />
                                </DataTemplate>
                            </ListView.ItemTemplate>
                        </ListView>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</CalendarView.CalendarViewDayItemStyle>
© www.soinside.com 2019 - 2024. All rights reserved.