請試試這個,讓我知道,如果這對你的作品:
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我已經改變了我的答案,爲您的綁定問題提供解決方案。我希望這一次會有所幫助。 –