我有扩展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>
但它也不起作用......那我该怎么办?
答案 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继承,对吧?