2010-10-24 3 views
0

У меня есть пользовательский DataGrid, смешанный с DataGridTemplateColumns, и пользовательское поведение, полученное на основе этого ответа Silverlight Datagrid: Highlight an entire column when that column is sorted. Проблема, с которой я сталкиваюсь, заключается в том, что любые ячейки DataGridTemplateColumn не собирают «подсветку». Шаблон ячейки, используемый для пользовательских столбцов, имеет структуру, показанную ниже. У кого-нибудь есть идеи, почему подсветка фона не применяется? Некоторое время я размахивал своим мозгом.Silverlight Datagrid: настройка фона ячейки шаблона с настраиваемым поведением

<DataTemplate> 
    <Grid> 
     <Border VerticalAlignment='Stretch' Margin='1' Background='Transparent'> 
      <TextBlock VerticalAlignment='Center' Text='{Binding Path=Variable}' /> 
     </Border> 
    </Grid> 
</DataTemplate> 

ответ

0

Чтобы решить эту проблему, я в конечном итоге нужно создать string DependencyProperty называется Background на пользовательский класс столбца, который наследует от DataGridTemplateColumn. Кроме того, в поведении мне пришлось проверить, какой тип столбца был.

Прежде, я бы просто рассмотрел столбец в обработчике события CollectionChanged для DataGridBoundColumn. Теперь я проверяю, действительно ли это тот тип или его DataGridTemplateColumn. DataGridTemplateColumn имеет другой способ, чтобы проверить пути привязки, разница показана ниже

DataGridBoundColumn: boundColumn.Binding.Path.Path DataGridTemplateColumn: boundColumn.SortMemberPath

Окончательный твик я должен был сделать в том, чтобы изменить структуру DataTemplate так, чтобы он теперь выглядит, как показано ниже, в основном настройка цвета по-другому.

<DataTemplate> 
    <Grid> 
     <Border> 
      <Border.Background> 
       <SolidColorBrush Color='{0}' /> 
      </Border.Background> 
      <TextBlock VerticalAlignment='Center' Text='{Binding Path=Variable}' /> 
     </Border> 
    </Grid> 
</DataTemplate> 
Смежные вопросы