将带有ComboBox的行添加到DataGrid

时间:2020-04-06 12:17:14

标签: c# wpf datagrid

我想做的是,我从数据库中获取数据。列将始终不同,因此必须动态设置。 我要添加的是在标题和第一行之间添加一行,另一行填充Comboboxes

Something like this

我尝试了

   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,但是我不知道如何将列表分配给特定的单元格。

有人可以帮我吗?

0 个答案:

没有答案
相关问题