У меня есть GridControl в WPF (это от DevExpress, но это не совсем так), и я пытаюсь стилизовать заголовки на основе StaticResource
.
Обычно то, что я мог сделать, это
<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. -->
... и в коде С#...
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
, поэтому стиль не применяется к заголовку.
Что я здесь делаю неправильно?
Func<Object, Object> FindResource { get; set; }
и установить для него значение(resKey) => FindResource(resKey);
. Тогда модель представления имеет доступ к знанию FrameworkElement своего собственного контекста, не получая ничего более запутанными, чем они. - person 15ee8f99-57ff-4f92-890c-b56153   schedule 27.04.2016