如何在c#中动态地分配数据网格's头
本文关键字:网格 数据网 数据 分配 动态 | 更新日期: 2023-09-27 18:04:17
如何在c#中动态分配数据网格的头?
考虑以下XAML:
<data:DataGrid x:Name="dataGrid" AutoGenerateColumns="False" Margin="1,1,1,1" >
<data:DataGrid.Columns>
<data:DataGridTextColumn
Header="Substantive"
Binding="{Binding Path=Substantive}"
IsReadOnly="True"
/>
<data:DataGridTextColumn
Header=""
Binding="{Binding Path=Month[0]}"
IsReadOnly="True"
/>
<data:DataGridTextColumn
Header=""
Binding="{Binding Path=Month[1]}"
IsReadOnly="True"
/>
</data:DataGrid.Columns>
</data:DataGrid>
在c#代码中,我如何定义标题是空白的?
好吧,如果没人知道,那我们换一个问题吧。如何用c#代码而不是XAML从头开始创建数据网格?
您可以像这样向数据网格添加列(对于textcolumn):
text2 = new DataGridTextColumn();
bind = new System.Windows.Data.Binding("ValueList");
bind.ConverterParameter = i;
bind.Converter = new IndexConverter();
text2.Binding = bind;
text2.Header = "Header";
text2.MaxWidth = 100;
....
datagrid1.Columns.Add(text2);
也可以通过:
访问已存在的列((DataGridTextColumn)datagrid1.Columns[i]).Header = "Header";
不知道你到底需要什么,但是:
-
创建包括标题在内的新列,参见用c#代码代替模板XAML
-
更改列的标题,参见http://msdn.microsoft.com/en-us/library/system.windows.controls.datagridcolumn.header%28v=VS.95%29.aspx
解决您最初的问题,在我看来,值转换器将在这里完成工作。
public class MyConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// Do stuff with parameter, for example:-
int month = Convert.ChangeType(parameter, typeof(int), culture);
return cultrue.DateTimeFormat.GetAbbreviatedMonthName(month + 1);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
然后在xaml:-
中使用它 <UserControl.Resources>
<local:MyConverter x:Key="myconv" />
</UserControl.Resources>
...
<data:DataGrid x:Name="dataGrid" AutoGenerateColumns="False" Margin="1,1,1,1" >
<data:DataGrid.Columns>
<data:DataGridTextColumn
Header="Substantive"
Binding="{Binding Path=Substantive}"
IsReadOnly="True"
/>
<data:DataGridTextColumn
Header="{Binding Converter={StaticResource myconv} ConverterParameter=0}"
Binding="{Binding Path=Month[0]}"
IsReadOnly="True"
/>
<data:DataGridTextColumn
Header="{Binding Converter={StaticResource myconv} ConverterParameter=1}"
Binding="{Binding Path=Month[1]}"
IsReadOnly="True"
/>
</data:DataGrid.Columns>
</data:DataGrid>
当你使用dataGrid。ItemsSource你的DataGrid头将被分配给你使用ItemsSource的List中的变量名。