2015-05-15 2 views
0

Мне нужно иметь DataGrid с черными и темно-серыми рядами. По умолчанию у него будет серый прямоугольник слева от каждой строки (отмеченный красным на снимке экрана), который мне не нужен. Чтобы удалить его, я должен использовать Template для DataGridRow. Проблема в том, что AlternatingRowBackground не работает в этом случае, хотя я попытался установить Background = «Transparent» для Border и DataGridCellsPresenter. Я нашел пример с VisualStates, но этот код кажется очень тяжелым. Есть ли опрятный способ исправить это?Настройка AlternatingRowBackground для DataGrid с Templated DataGridRow

<Style TargetType="{x:Type DataGridRow}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type DataGridRow}"> 
        <Border> 
         <DataGridCellsPresenter/> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

<Style TargetType="{x:Type DataGrid}"> 
     <Setter Property="Background" 
       Value="Black" /> 
     <Setter Property="Foreground" 
       Value="White" /> 
     <Setter Property="RowBackground" 
       Value="Black" /> 
     <Setter Property="AlternatingRowBackground" 
       Value="DarkGray" /> 
    </Style> 

screens

ответ

1

Серый прямоугольник является так называемая строка заголовка. По умолчанию DataGrid включает заголовок строки и столбца. Вы отключите его от заголовка строки, установив

HeadersVisibility=Column 

Для этого вам не нужен шаблон.