이 시도하고이 당신을 위해 작동하는지 알려 주시기 바랍니다 :
DailyValues이 정수의 배열 (매일 비트 값을 포함하는 각 정수)가 될 수 있습니다.
<UserControl.Resource>
<HourToBrushConverter x:Key="hourToBrushConverter" />
</UserControl.Resource>
<DataGrid ItemsSource="{Binding DailyValues}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="1AM" Width="SizeToCells" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Rectangle Fill="{Binding .
Converter={StaticResource hourToBrushConverter},
ConverterParameter=1}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="2AM" Width="SizeToCells" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Rectangle Fill="{Binding .
Converter={StaticResource hourToBrushConverter},
ConverterParameter=2}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!-- add a column for each hour (up to 24) -->
</DataGrid.Columns>
</DataGrid>
[ValueConversion(typeof(int), typeof(Brush))]
public class HourToBrushConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
int dayValue = (int)value;
int hourNumber = (int)parameter;
int mask = GetMask(hourNumber);
return (dayValue & mask) > 0 ? Brushes.Green : Brushes.Red;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
private static int GetMask(int index)
{
return 1 << index;
}
}
지금은 Visual Studio에 액세스 할 수 없으므로 구문 실수로 사과드립니다.
답장을 보내 주셔서 감사합니다. Claudiu,하지만 문제는 어떤 속성이 내가 여기에 셀 액세스 권한이 없으며 열에 배경 속성이 없습니다. –
안녕하세요 MSingh 저는 바인딩 문제에 대한 해결책을 제공하기 위해 제 대답을 변경했습니다. 나는이 시간이 도움이되기를 바랍니다. –