2011-03-29 14 views
6

Estoy buscando agregar un pequeño rectángulo (10x10) como una celda en mi DataGrid. Ya lo tengo configurado en el objeto. Estoy buscando una forma de obtenerlo del código en mi DataGrid.Agregando un pequeño rectángulo de color en la celda DataGrid

Ésta es mi XAML cuadrícula de datos:

<DataGrid Name="dataGrid1" Grid.Row="2" AutoGenerateColumns="False" DataContext="{Binding}" HeadersVisibility="Column" 
       HorizontalGridLinesBrush="#ccc" VerticalGridLinesBrush="#ccc" VirtualizingStackPanel.VirtualizationMode="Standard" Background="#FFF6F6F6" CanUserAddRows="False"> 
     <DataGrid.Resources> 
      <ResourceDictionary Source="Pages/DataGridStyle.xaml" /> 
     </DataGrid.Resources> 
     <DataGrid.Columns> 
      <!-- In here I would like a datagrid cell that is just a 10x10 box which uses {Binding Path=TemplateCellColour} (templatecellcolour is stored as a brush, is this an issue? --> 
      <DataGridTextColumn ElementStyle="{StaticResource CenterTextCell}" Width="0.5*" Binding="{Binding Path=TemplateCellID}" Header="ID"></DataGridTextColumn> 
      <DataGridTextColumn ElementStyle="{StaticResource CenterTextCell}" Width="1*" Binding="{Binding Path=CellWidth}" Header="Width"></DataGridTextColumn> 
      <DataGridTextColumn ElementStyle="{StaticResource CenterTextCell}" Width="1*" Binding="{Binding Path=CellHeight}" Header="Height"></DataGridTextColumn> 
      <DataGridTextColumn ElementStyle="{StaticResource CenterTextCell}" Width="1*" Binding="{Binding Path=CellTop}" Header="Top"></DataGridTextColumn> 
      <DataGridTextColumn ElementStyle="{StaticResource CenterTextCell}" Width="1*" Binding="{Binding Path=CellLeft}" Header="Left"></DataGridTextColumn> 
     </DataGrid.Columns> 
</DataGrid> 

Por favor, ver el comentario Para una comprensión más fácil de lo que quiero.

Respuesta

5

Reemplace DataGridTextColumn con DataGridTemplateColumn. Algo como esto:

<DataGridTemplateColumn > 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <Rectangle Width="10" Height="10" Fill="{Binding TemplateCellColour}" /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

Y sí, TemplateCellColour debería haber un Brush, que es la correcta.

+0

Funcionó perfecto, tuvo que cambiar el "Fondo" por "Rellenar", pero todo funcionó bien. Aclamaciones. – Prisoner

+0

@prisoner, respuesta fresca y actualizada con su comentario. Publicar el código del bloc de notas tiene algunos efectos secundarios :) – Snowbear

Cuestiones relacionadas