2012-03-15 4 views
4

Я хочу иметь собственный тип столбца в datagrid WPF, часть которого будет текстовым полем для ввода пользователем. К сожалению, он, похоже, не наследует внешний вид самого datagrid - он не отображает чередующийся цвет, когда строка выбрана или отредактирована клетка, о которой идет речь, не выделяется таким же образом и т. Д.Наследование стилей DataGrid WPF в пользовательском CellTemplate

  <DataGridTemplateColumn Header="Name" > 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate > 
         <TextBox Text="{Binding DisplayName,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" IsReadOnly="False" BorderThickness="0" />       
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 

Похоже, что стиль текстового поля по умолчанию переопределяет стиль файла datagrid; есть ли способ использовать стиль datagrids? Я мог бы, конечно, создать текстовое поле, чтобы имитировать datagrid, но если я хочу добавить другие элементы управления, я должен сделать это и для каждого из них. Если я поделюсь по этому маршруту, как бы изменить стиль, основанный на свойствах datagridrow изнутри celltemplate? - например, IsSelected.

+0

У меня такая же проблема. Я надеюсь, что кто-то ответит на этот вопрос :) –

ответ

0

Пожалуйста, измените свой код XAML добавить следующее к определению текстового поля:

BorderThickness="0"  
Background="{Binding RelativeSource={RelativeSource AncestorType=DataGridRow}, Path=Background}" 

Это сделает Textbox унаследовать DataGrid Backround недвижимость.

Удача