我很难让RowStyleSelector与WPF DataGrid一起工作。
在我的资源中,我有
<loc:DetailsRowStyleSelector x:Key="detailsRowStyleSelector" AddRowStyle="{StaticResource newItemRowStyle}" StandardRowStyle="{StaticResource RowStyle}"/>
然后我的数据网格像这样使用:
<DataGrid ...
EnableRowVirtualization="false"
VirtualizingStackPanel.VirtualizationMode="Standard"
RowStyleSelector="{StaticResource detailsRowStyleSelector}"
调用了选择器的构造函数,但没有调用SelectStyle方法,而且我的行看起来都一样。关于这方面的文档似乎很少,但这就是我的选择器的样子:
public class DetailsRowStyleSelector : StyleSelector {
public Style AddRowStyle { get; set; }
public Style StandardRowStyle { get; set; }
public DetailsRowStyleSelector() {
Console.WriteLine(""); // this is called
}
public override Style SelectStyle(object item, DependencyObject container) {
// this is not called
最可能的原因是在DataGrid
上设置了RowStyle
或ItemContainerStyle
,可以是本地设置的,也可以是通过继承的样式设置的。
RowStyleSelector
覆盖ItemContainerStyleSelector
,其中包括文档中的以下语句:
请注意,如果设置了ItemContainerStyle属性,则会忽略此属性。