Добавление строки с ComboBox в DataGrid - PullRequest
0 голосов
/ 06 апреля 2020

Что я пытаюсь сделать, так это получить данные из базы данных. Столбцы всегда будут разными, поэтому их нужно устанавливать динамически. Что я хочу добавить, так это добавить строку между заголовком и первой строкой другую строку, заполненную 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;
        }

This что-то работает, но моя проблема в том, как мне создать ItemSource. Он не работает с DataTable, потому что мне не удалось связать объект с DataCell

. В целях тестирования я попробовал что-то вроде

    List<Value> valuelist = new List<Value>();
            List<Value> valuelist1 = new List<Value>();
            List<List<Value>> values = new List<List<Value>>();
            Value value = new Value();
            value.Type = true;
            value.ComboItems= CFGObjects;
            value.SelectedItem = "CFG01";
            value.Text = "Sample";
            Value value1 = new Value();
            value1.Type = false;
            value1.ComboItems = CFGObjects;
            value1.SelectedItem = "CFG02";
            value1.Text = "Sample1";

            Value value2 = new Value();
            value2.Type = false;
            value2.ComboItems = CFGObjects;
            value2.SelectedItem = "CFG02";
            value2.Text = "Sample2";
            valuelist.Add(value);
            valuelist.Add(value1);
            valuelist.Add(value2);
            valuelist1.Add(value1);
            valuelist1.Add(value1);
            valuelist1.Add(value1);
            values.Add(valuelist);
            values.Add(valuelist1);
            DataTableGrid.ItemsSource= values;   

, но DataContext для каждого Ячейка такая же, поскольку DataContext исходит из строки, и я не знаю, как ее изменить.

Еще одна вещь, которую я пытался создать конвертер. Я вижу DataContext с 3 списками, но я не знал, как назначить список определенной ячейке c.

Может кто-нибудь помочь мне с этим?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...