2010-04-25 2 views
2

Я использую DataGrid WPF, где у одного из столбцов есть требование, чтобы показать гиперссылку «Редактировать», если строка доступна для редактирования - это обозначается логическим буфером в модели подстановки для строки. Я смог достичь этого с помощью DataGridTemplateColumn - никаких проблем. Однако дополнительное требование во всей строке не должно показывать никаких бликов при выборе строки (по умолчанию это синий фон). Я смог добиться этого на других столбцах, определив стиль DataGridCell с прозрачным фоном, например.Укладка столбцов на основе DataGridTemplateColumn в WPF DataGrid

<DataGridTextColumn 
    Header="Id" 
    Binding="{Binding Path=Id}" 
    HeaderStyle="{StaticResource DataGridColumnHeaderStyle}" 
    CellStyle="{StaticResource DataGridCellStyle}" /> 

где DataGridCellStyle определяются следующим образом:

<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}"> 
    <Setter Property="Background" Value="Transparent" /> 
    ... 
</Style> 

Однако колонна в вопросе, DataGridTemplateColumn, не предлагает «CellStyle» атрибут, который можно использовать для включения и выключения основных моментов выбора. Итак, мой вопрос заключается в том, как установить стиль ячейки при использовании DataGridTemplateColumn? Вот моя реализация колонны, которая удовлетворяет первое требование (то есть показывающая «Edit» гиперссылка, если строка редактируется):

<DataGridTemplateColumn 
    Header="Actions" 
    HeaderStyle="{StaticResource CenterAlignedColumnHeaderStyle}"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock 
       Visibility="{Binding Path=Editable, Converter={StaticResource convVisibility}}" 
       Style="{StaticResource CenterAlignedElementStyle}"> 
        <Hyperlink 
         Command="..." 
         CommandParameter="{Binding}"> 
         <TextBlock Text="Edit" /> 
        </Hyperlink> 
      </TextBlock> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

Спасибо.

ответ

Смежные вопросы