在自定义CellTemplate中继承WPF DataGrid样式



我希望在WPF数据网格中有一个自定义列类型,其中一部分将是用于用户输入的文本框。不幸的是,它似乎没有继承数据网格本身的外观-它没有显示交替的颜色,当选择或编辑一行时,有问题的单元格没有以同样的方式突出显示,等等

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

看起来默认文本框的样式覆盖了数据网格的样式;有没有一种方法可以直接使用datagrids样式?我当然可以设置文本框的样式以模仿数据网格,但如果我想添加其他控件,我也必须为每个控件添加这些控件。如果我真的走上了这条路,我该如何根据celltemplate中datagridow的属性来更改样式?-例如IsSelected。

请更改XAML以将以下内容添加到文本框定义中:

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

这将使Textbox继承您的datagrid backround属性。

好运

最新更新