2013-02-22 103 views
0

我有一個使用mvvm light工具包的DXgrid,它顯示web服務中的對象列表。dxgrid將單元格的顏色綁定到字符串值

該對象的其中一個屬性是Color域。我希望能夠着色一個顏色的單元格。

我已經畫了細胞內的矩形試過,但沒有

<dxg:GridControl Grid.Row="1" AutoPopulateColumns="True" Height="412" Name="grdLicence" VerticalAlignment="Bottom" 
        ItemsSource="{Binding Model.Cars}" 
        DesignTimeDataObjectType="{Binding Model.Cars}" Grid.RowSpan="2"> 

     <dxg:GridControl.Columns> 

      <dxg:GridColumn FieldName="{Binding Path=Id}" DisplayMemberBinding="{Binding Path=Id}" Header="ID"/> 
          <dxg:GridColumn FieldName="{Binding Path=LicenseDate, StringFormat=\{0:dd/MM/yyyy\}}" DisplayMemberBinding="{Binding Path=LicenseDate, StringFormat=\{0:dd/MM/yyyy\}}" Header="Type" > 
       <dxg:GridColumn.DisplayTemplate> 
        <ControlTemplate> 
         <Rectangle Height="20" Width="30"> 
          <Rectangle.Fill> 
           <SolidColorBrush Color="{Binding Path=Colour}"></SolidColorBrush> 
          </Rectangle.Fill> 

         </Rectangle> 

        </ControlTemplate> 
       </dxg:GridColumn.DisplayTemplate> 
      </dxg:GridColumn> 

      <dxg:GridColumn FieldName="{Binding Path=Province}" DisplayMemberBinding="{Binding Path=Province}" Header="Province" /> 


     </dxg:GridControl.Columns> 

     <dxg:GridControl.View> 
      <dxg:TableView Name="tableView1" AutoWidth="True" ShowSearchPanelMode="Always" SelectedRowsSource="{Binding Selection}" MultiSelectMode="Row" NavigationStyle="Row" FocusedRow="{Binding SelectedItem, Mode=TwoWay}" /> 


     </dxg:GridControl.View> 
    </dxg:GridControl> 

,如果我硬編碼工作的顏色,但不是通過結合運氣。物業名稱正確 謝謝!


確定進一步得到,我現在用的是cellpropperty代替,並使用轉換器,但由於某種奇怪的原因轉換犯規火災。我在它有一個斷點,但它從來沒有擊中

 <UserControl.Resources> 

    <views:ColourConverter x:Key="clrc"/> 

    <Style x:Key="CellStyle" TargetType="{x:Type dxg:CellContentPresenter}"> 
     <Setter Property="Background" Value="{Binding Path=DataContext.Colour, Converter={StaticResource clrc}}" /> 
    </Style> 
</UserControl.Resources> 

// note顏色是字段名稱。

+0

你可以用DataTemplate代替ControlTemplate嗎? – 2013-02-22 13:15:58

+0

我可以,假設我知道如何。我是devExpress的新手。順便說一句,我有顏色名稱作爲字符串,如果這有助於 – Crudler 2013-02-22 13:28:04

回答

0

如果你將一個Color屬性綁定到一個字符串屬性,它不會工作。該方案犯規知道如何將它轉換,所以你要告訴他一個IValueConverter

public class StringToColorConverter:IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     System.Drawing.Color color = System.Drawing.Color.FromName(value.ToString()); 
     if (color != null) 
      return new SolidColorBrush(System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B)); 

     return new SolidColorBrush(System.Windows.Media.Colors.Transparent); 

    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return value.ToString(); 
    } 
} 

如果仍然不工作,請將轉換-方法的斷點看看是否被輸入。

+0

謝謝。很有意義。我仍然沒有正確的生活。正如你所說的那樣,斷點不會被擊中。 xaml被正確地聲明瞭嗎? <觀點:ColourConverter X:鍵= 「CLRC」/> <形式X:鍵= 「CellStyle」 的TargetType = 「{x:類型DXG:CellContentPresenter}」> Crudler 2013-02-22 14:15:49

+0

看起來不錯,嘗試在您的Value-捆綁。 – 2013-02-22 14:26:57

+0

沒有運氣..... grrr – Crudler 2013-02-22 14:28:35