C# 如何在XAML中设置数据网格左上角的样式?
与此问题相关: 我有一个C# 如何在XAML中设置数据网格左上角的样式?,c#,.net,wpf,xaml,datagrid,C#,.net,Wpf,Xaml,Datagrid,与此问题相关: 我有一个DataGrid(尚未完成,请原谅样式)。如何使用XAML更改左上角的背景色(与另一个问题中的C#相反) 以下是我当前的XAML: <DataGrid x:Name="DataGrid" HorizontalAlignment="Center" VerticalAlignment="Center" ColumnWidth="100" ColumnHeaderHeight="50" RowHeight="50" RowHeaderWidth="1
DataGrid
(尚未完成,请原谅样式)。如何使用XAML更改左上角的背景色(与另一个问题中的C#相反)
以下是我当前的XAML:
<DataGrid x:Name="DataGrid" HorizontalAlignment="Center" VerticalAlignment="Center"
ColumnWidth="100" ColumnHeaderHeight="50" RowHeight="50" RowHeaderWidth="115" Padding="5"
BorderBrush="#FF646464" FontSize="18" FontFamily="Segoe UI"
CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="False" CanUserResizeRows="False"
Focusable="False" IsEnabled="False" IsReadOnly="True">
<DataGrid.Background>
<SolidColorBrush Color="#FFFFFFC8"/>
</DataGrid.Background>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding In}" Header="In"/>
<DataGridTextColumn Binding="{Binding Out}" Header="Out"/>
<DataGridTextColumn Binding="{x:Null}" Header="Hours"/>
</DataGrid.Columns>
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="#FFFFFFC8"/>
<Setter Property="BorderBrush" Value="DarkSlateGray"/>
<Setter Property="BorderThickness" Value="1, 2"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="5"/>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.RowBackground>
<SolidColorBrush Color="Transparent"/>
</DataGrid.RowBackground>
<DataGrid.RowHeaderStyle>
<Style TargetType="{x:Type DataGridRowHeader}">
<Setter Property="Background" Value="#FFFFFFC8"/>
<Setter Property="BorderBrush" Value="DarkSlateGray"/>
<Setter Property="BorderThickness" Value="2, 1"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="Padding" Value="5"/>
</Style>
</DataGrid.RowHeaderStyle>
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridRow}}, Path=Item.Day}"/>
</DataTemplate>
</DataGrid.RowHeaderTemplate>
</DataGrid>
奖励:如何在当前只有1px边框的行/列标题上获得2px边框?正确,因此如果我们在第一个代码示例的顶部查看
<!--Style and template for the button in the upper left corner of the DataGrid.-->
声明的样式模板为:
<Style TargetType="{x:Type Button}"
x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle,
TypeInTargetAssembly={x:Type DataGrid}}">
我们现在知道它在哪里了。在那之后,只需将所述样式部分编辑到我们的核心内容中,并在实例级别或模板等处重写即可
至于您的额外问题,如果我们在
上查看相同的样式模板,我们将在x:Name=“RowHeaderOrder”
上看到硬设置的边框厚度,我们将更改为任何样式。其中,这同样适用于
模板,因为x:Name=“ColumnHeaderOrder”
上还有另一个硬设置的边框厚度
,即“1”。测试后,我发现只有一种设置颜色的方法。
使用DataGrid的背景色和按钮的不透明度0:-)
如何仅针对此实例覆盖左上角的样式?我尝试将样式(以及一些样式值)添加到
中,但没有任何更改。您可以分享您尝试的内容吗?否则,等我有空的时候,我会去加载一个WPF项目,如果你愿意,我会亲自测试,但不能保证这将是最快速的响应,忙碌的一周。嗨,克里斯,不用担心,我感谢你的帮助!我将
添加到包含数据网格的窗口的
中。我想我的问题是,我不知道如何将这种新样式应用于按钮
(在我的DataGrid
XAML中没有按钮
)。再次感谢。您将其放入其中,并将x:键更改为DataGridSelectAllButtonStyle
?您可以在下面的答案中看到完整的示例代码:
<DataGrid Background="Yellow" RowHeaderWidth="100">
<DataGrid.Resources>
<Style TargetType="{x:Type Button}" x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}">
<Setter Property="Opacity" Value="0" />
</Style>
</DataGrid.Resources>
</DataGrid>