gpt4 book ai didi

wpf - 在 DataGrid 控件中自定义自动生成的列

转载 作者:行者123 更新时间:2023-12-01 11:53:44 25 4
gpt4 key购买 nike

在阅读了关于如何 Customize Auto-Generated Columns 的优秀文章后,我遇到了一个问题。

尝试在 DataGrid 中自定义自动生成的列时控制,我想做一些简单的事情,比如确保所有数字列值都是右对齐的。为此,我创建了一个 DataTemplate如下:

<DataGrid x:Name="MyGrid" AutoGeneratingColumn="MyGrid_AutoGeneratingColumn">
<DataGrid.Resources>
<DataTemplate x:Key="IntegerTemplate">
<TextBlock Text="{Binding}" HorizontalAlignment="Right"/>
</DataTemplate>
</DataGrid.Resources>
</DataGrid>

然后,在 AutoGeneratingColumn DataGrid事件处理程序,我想分配这个通用 DataTemplate作为 CellTemplate对于所有整数(即数字)列:
public void MyWindow_AdjustColumnTemplateBasedOnType(
DataGridAutoGeneratingColumnEventArgs e)
{
if (/*This is a column I want to change*/)
{
DataGridTemplateColumn column=new DataGridTemplateColumn();

column.Header=e.PropertyName;
column.CellTemplate=MyGrid.FindResource("IntegerTemplate") as DataTemplate;
e.Column=column;
}
}

问题是 Text 的值 TextBlock 的列不显示所需的结果。而不是在其列具有此 DataTemplate 的每个单元格中看到右对齐的值作为它的 CellTemplate , 我懂了:

enter image description here

通过设置属性 Text 使用空绑定(bind)语法至 "{Binding}"显然是不正确的。设置基于路径的绑定(bind)确实会产生所需的结果。也就是说,如果我使用以下内容设置(硬编码数据路径)绑定(bind):
  <DataGrid.Resources>
<DataTemplate x:Key="IntegerTemplate">
<!-- Binding hard set to ProductId -->
<TextBlock Text="{Binding ProductId}" HorizontalAlignment="Right"/>
</DataTemplate>
</DataGrid.Resources>

那么一切都很好,但我的通用 DataTemplate不再是通用的。它不能用于所有整数列,而是只能用于 ProductId列,因为绑定(bind)固定为该特定数据项的值:

enter image description here

我应该使用什么正确的绑定(bind)以便通用 DataTemplate实际上使用相应的 ItemSource 中的任何值与其关联的列的属性。

最佳答案

我相信样式会在这里解决您的问题。

        private void MyGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (/*This is a column I want to change*/)
{
DataGridColumn column = e.Column;
column.CellStyle = MyGrid.FindResource("IntegerTemplate") as Style;

}
}

在 XAML 中你可以写
<Style TargetType="DataGridCell" x:Key="IntegerTemplate">
<Setter Property="FontWeight" Value="Bold"></Setter>
</Style>

关于wpf - 在 DataGrid 控件中自定义自动生成的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9021243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com