我想做的是,我从数据库中获取数据。列将始终不同,因此必须动态设置。
我要添加的是在标题和第一行之间添加一行,另一行填充Comboboxes
我尝试了
public string Text { get; set; }
public bool Type { get; set; }
public List<string> ComboItems { get; set; }
public string SelectedItem { get; set; }
根据类型,是将true
更改为false
还是CellTemplate
DataTrigger
启用了自动生成列
<DataTemplate x:Key="Template">
<ContentControl Content="{Binding Path=.}">
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding Path = Type}" Value="true">
<Setter Property="ContentTemplate" >
<Setter.Value>
<DataTemplate>
<telerik:RadComboBox ItemsSource="{Binding Path= ComboItems}" SelectedItem="{Binding Path= SelectedItem}"></telerik:RadComboBox>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path = Type}" Value="false">
<Setter Property="ContentTemplate" >
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding Path = Text}"></TextBlock>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
这在某种程度上可行,但是我的问题是如何创建 private void DataTableGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
DataTemplate dt = null;
dt = (DataTemplate)Resources["Template"];
DataGridTemplateColumn c = new DataGridTemplateColumn()
{
CellTemplate = dt,
Header = e.Column.Header,
HeaderTemplate = e.Column.HeaderTemplate,
HeaderStringFormat = e.Column.HeaderStringFormat,
SortMemberPath = e.PropertyName ,
};
e.Column = c;
}
。
它不适用于ItemSource
,因为我无法将对象绑定到DataCell
出于测试目的,我尝试了类似的方法
DataTable
但是每个单元格的DataContext都是一样的,因为DataContext来自行并且我不知道如何更改它。
我尝试的另一件事是创建一个Converter。 我看到了带有3个列表的DataContext,但是我不知道如何将列表分配给特定的单元格。
有人可以帮我吗?