Ich habe ein GridControl in WPF (es ist von DevExpress, aber das ist nicht wirklich der Punkt) und ich versuche, die Header basierend auf einem StaticResource
stylen.WPF-Einstellung Stil StaticResource in ViewModel
Normalerweise, was ich tun könnte, ist
<UserControl.Resources>
<Style x:Key="HeaderStyle" TargetType="dxg:HeaderContentControl">
<Setter Property="FontWeight" Value="Bold" />
</Style>
</UserControl.Resources>
<dxg:GridControl x:Name="MyParameters" ItemsSource="{Binding ParamRows}">
<dxg:GridColumn ColumnHeaderContentStyle="{StaticResource HeaderStyle}" x:Name="ParamName" FieldName="ParamName" Width="80" Header="Parameter" />
<dxg:GridColumn ColumnHeaderContentStyle="{StaticResource HeaderStyle}" x:Name="ParamValue" Binding="{Binding ParamValue}" Width="50" Header="Value" />
<!-- etc. -->
..und die fein funktionieren würde.
Ich baue die Spalten jedoch dynamisch im ViewModel, also muss ich in der Lage sein, die ColumnHeaderContentStyle
programmgesteuert zur Laufzeit festzulegen.
So hat die XAML ...
<dxg:GridControl x:Name="Parameters" ItemsSource="{Binding ParamRows}" ColumnsSource="{Binding ParamColumns}">
<!-- no list of rows. -->
... und in der C# -Code ...
ParamColumns.Add(new GridColumn
{
ColumnHeaderContentStyle = (Style)Application.Current.Resources["HeaderStyle"],
FieldName = "ParamName",
Width=80,
Header="Parameter"
});
ParamColumns.Add(new GridColumn
{
ColumnHeaderContentStyle = (Style)Application.Current.Resources["HeaderStyle"],
Binding = new Binding("ParamValue"),
Width=50,
Header="Value"
});
Ein wenig Forschung zeigte mir Application.Current.Resources["HeaderStyle"]
zu verwenden, aber es gibt null
und so wird der Stil nicht auf den Header angewendet.
Was mache ich hier falsch?
Wenn es nach mir ginge, und ich war zu diesem Entwurf verpflichtet, würde ich versuchen, zuerst das Ansichtsmodell gibt ein 'Func