У меня есть GridControl в WPF (это от DevExpress, но это не совсем так), и я пытаюсь создать заголовки на основе StaticResource
.Настройка WPF Стиль StaticResource в ViewModel
Обычно то, что я мог сделать, это
<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. -->
..и что будет работать нормально.
Однако я динамически строю столбцы в ViewModel, поэтому мне нужно иметь возможность устанавливать программно ColumnHeaderContentStyle
во время выполнения.
Так XAML имеет ...
<dxg:GridControl x:Name="Parameters" ItemsSource="{Binding ParamRows}" ColumnsSource="{Binding ParamColumns}">
<!-- no list of rows. -->
... и в C# код ...
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"
});
Немного исследований указал мне на использование Application.Current.Resources["HeaderStyle"]
, однако он возвращает null
и поэтому стиль не применяется к заголовку.
Что я здесь делаю неправильно?
Если бы это было, и я привержен этой конструкции, я бы сначала попробовать давая ViewModel 'Func