2011-11-18 49 views
1

我正在WPF datagrid自定義控件上工作,其中每天每天都有一天列,每天每個小時有24列,我將這些值保存在數據庫中的七個不同列中(每個這些列的數據類型是二進制(3)(3字節* 8位= 24),每小時1位,我的意圖是以某種方式綁定網格,以便網格的每個單元格將其顏色更改爲紅色/綠色基於那個小時的比特值(紅色代表0,綠色代表1),但我不知道從哪裏開始。Datagrid與二進制值綁定

循環不受限制,但如果沒有出路,那麼我也應該這樣做。

請幫忙。

回答

0

請試試這個,讓我知道,如果這對你的作品:

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,所以我對任何語法錯誤表示歉意。

+0

感謝您的回覆Claudiu,但問題是與哪個屬性我應該綁定轉換器我沒有單元訪問這裏和列沒有與他們的背景屬性。 –

+0

嗨MSingh我已經改變了我的答案,爲您的綁定問題提供解決方案。我希望這一次會有所幫助。 –