我正在使用 MVVM 方法。我有一个数据网格,其中包含一周中的几天的列。我需要用阴影背景突出显示当天。视图模型中的其他所有内容都正确显示,因此它通常是绑定的。但是,永远不会应用阴影,如果我在我的属性中放置断点,则永远不会命中断点。我正在做一些愚蠢的事情,但无法发现什么。
这是我在视图模型中的颜色代码:
public Brush SundayColor { get { return GetBrushColorForWeekday(DayOfWeek.Sunday); } }
public Brush MondayColor { get { return GetBrushColorForWeekday(DayOfWeek.Monday); } }
public Brush TuesdayColor { get { return GetBrushColorForWeekday(DayOfWeek.Tuesday); } }
public Brush WednesdayColor { get { return GetBrushColorForWeekday(DayOfWeek.Wednesday); } }
public Brush ThursdayColor { get { return GetBrushColorForWeekday(DayOfWeek.Thursday); } }
public Brush FridayColor { get { return GetBrushColorForWeekday(DayOfWeek.Friday); } }
public Brush SaturdayColor { get { return GetBrushColorForWeekday(DayOfWeek.Saturday); } }
private Brush GetBrushColorForWeekday(DayOfWeek dayOfWeek)
{
return dayOfWeek == CurrentDate.DayOfWeek ? Brushes.AliceBlue : Brushes.White;
}
对于网格 XAML,我使用以下内容。为了简单起见,我只展示了一个列定义,但其他六个类似:
<DataGridTextColumn Header="Mon" Width="33" Binding="{Binding MondayQuantity,NotifyOnTargetUpdated=True}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Background" Value="{Binding MondayColor}"/>
<Setter Property="Foreground" Value="Black"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
我知道样式就像我将绑定更改为固定颜色一样工作,我看到了选择的颜色。那么为什么我的绑定不起作用?
编辑
我是愚蠢的!颜色属性直接在我的视图模型中,而不是在网格绑定的项目中。
是否可以将网格样式绑定到视图模型中位于网格绑定到的 observablecolleciton 之外的项目?我想,“上一级”是我所追求的:
视图模型
mondaycolor 等 <-- 将样式绑定到此
items observablecollection <--网格中的数据来自这个
- 数量