我想为WPF数据网格设置样式,这看起来非常简单。据我所知,我必须有如下代码:
<Style x:Key="DataGridColumnHeaderStyle" TargetType="{x:Type Custom:DataGridColumnHeader}" >
<Setter Property="Background" Value="#88800080" />
<Setter Property="Foreground" Value="White" />
</Style>
但我的问题是..我在哪里放置此代码,如何让datagrid知道使用上面的样式?
此致 小号
答案 0 :(得分:2)
将它放在xaml(本地或全局)的资源中。最简单的方法是将它放在当前xaml文件的本地资源中:
<Page Name="SomeName"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Page.Resources>
<Style x:Key="DataGridColumnHeaderStyle" TargetType="{x:Type Custom:DataGridColumnHeader}" >
<Setter Property="Background" Value="#88800080" />
<Setter Property="Foreground" Value="White" />
</Style>
</Page.Resources>
<!-- The rest of the xaml -->
</Page>
答案 1 :(得分:1)
放置样式的最佳位置是在App.xaml中引用的资源字典中。
资源字典(本例中为“StyleResources.xaml”):
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="TextBlockRightAlign" TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Right" />
</Style>
<Style x:Key="TextBlockTitle" TargetType="TextBlock">
<Setter Property="FontSize" Value="20" />
<Setter Property="FontWeight" Value="Bold" />
</Style>
</ResourceDictionary>
引用App.xaml中的样式字典:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="StyleResources.xaml"/>
</ResourceDictionary.MergedDictionaries>
<ValueConverters:PriceConverter x:Key="PriceConverter"/>
</ResourceDictionary>
</Application.Resources>
在数据网格中使用定义(这里的列格式,但也适用于标题):
<data:DataGridTextColumn Header="Charge" Width="100"
Binding="{Binding Charge, Mode=TwoWay, Converter={StaticResource PriceConverter}}"
ElementStyle="{StaticResource TextBlockRightAlign}" />
请注意,单元格内的元素是TextBlock,因此您可以使用目标类型为TextBlock的样式。
答案 2 :(得分:1)
至于“未找到Type DataGridColumnHeader”:您需要第二个xml命名空间条目,因为DataGridColumnHeader位于System.Windows.Controls.Primitives命名空间中。你需要像
这样的东西xmlns:dg="clr-namespace:Microsoft.Windows.Controls.Primitives;assembly=WPFToolkit"
然后引用您的样式中的新命名空间,例如
<Style x:Key="DataGridColumnHeaderStyle" TargetType="{x:Type dg:DataGridColumnHeader}" >
答案 3 :(得分:0)
样式通常是:
<UserControl.Resources>
<Style x:Key="DataGridColumnHeaderStyle" TargetType="{x:Type Custom:DataGridColumnHeader}" >
<Setter Property="Background" Value="#88800080" />
<Setter Property="Foreground" Value="White" />
</Style>
</UserControl.Resources>
如果不在UserControl中,请使用适当的容器,您可以使用“Window”或您所在的任何容器。
您还需要在数据网格中引用它:
<Custom:DataGrid ColumnHeaderStyle="{StaticResource DataGridColumnHeaderStyle}"/>