如何基于默认的DataGrid样式创建样式?

时间:2011-02-13 18:07:46

标签: c# wpf datagrid styles

我有扩展DataGrid的自定义控件。它被称为ExtendedDataGrid。我希望为ExtendedDataGrid提供与DataGrid样式相同的样式,除非它更改模板。我尝试过这样的事情:

<Style TargetType="{x:Type MyControls:ExtendedDataGrid}" BasedOn="{StaticResource {x:Type DataGrid}}">
    <Setter Property="Template">
    ...
    </Setter>
</Style>

但是它说没有找到资源。

所以我试试:

<Style TargetType="{x:Type MyControls:ExtendedDataGrid}" BasedOn="{StaticResource {ComponentResourceKey ResourceId=DataGridStyle, TypeInTargetAssembly={x:Type DataGrid}}}">
    <Setter Property="Template">
    ...
    </Setter>
</Style>

但它也不起作用......那我该怎么办?

2 个答案:

答案 0 :(得分:47)

谜团解决了:)

我上面的第一个代码实际上有效:

<Style TargetType="{x:Type MyControls:ExtendedDataGrid}" BasedOn="{StaticResource {x:Type DataGrid}}">
    <Setter Property="Template">
    ...
    </Setter>
</Style>

我认为它不起作用因为VS(或Resharper)在我的代码中显示错误,说没有找到资源...... VS(或Resharper)中的Bug :(

答案 1 :(得分:2)

  

如果你用a创建一个样式   TargetType属性并以其为基础   另一种也定义了一种风格   TargetType属性,目标类型   派生风格必须相同   作为或来自的类型   基本风格。

您的网格确实从DataGrid继承,对吧?