如何在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中从头开始创建DataGrid?答案 0 :(得分:1)
您可以将列添加到数据网格中(对于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";
答案 1 :(得分:0)
不确定你到底需要什么:
答案 2 :(得分:0)
在解决您的原始问题时,我认为值转换器可以在这里完成工作。
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>
答案 3 :(得分:0)
使用dataGrid.ItemsSource时,DataGrid标题将被分配给List中用作ItemsSource的变量名称。