Добавляйте строки только в один набор столбцов таблицы данных, остальные столбцы должны оставаться такими же

Я новичок в WPF, ниже моя текущая реализация XAML:

<Window x:Class = "TestingWPFPage.MainWindow"
    xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:col = "clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local = "clr-namespace:TestingWPFPage"
    mc:Ignorable = "d"
    Title = "MainWindow" Height = "400" Width = "600">
<Window.Resources>
    <col:ArrayList x:Key = "arrList">
        <col:DictionaryEntry Key = "Fixed" Value = "1"/>
        <col:DictionaryEntry Key = "Variable" Value = "2"/>
    </col:ArrayList>        
</Window.Resources>
<Border Padding = "2">
    <Grid>
        <ScrollViewer ScrollViewer.VerticalScrollBarVisibility = "Auto">
            <DataGrid Margin = "5,5,5,40" AutoGenerateColumns = "False" CanUserAddRows = "True" CanUserDeleteRows = "True" VerticalAlignment = "Stretch" Height = "400" Name = "dataGrid1" ItemsSource = "{Binding GridCollection}">
                <DataGrid.Columns>

                    <!-- 1st Column - Select All Checkbox -->
                    <DataGridTemplateColumn>
                        <DataGridTemplateColumn.Header>
                            <CheckBox Content = "Select All" x:Name = "headerCheckBox" />
                        </DataGridTemplateColumn.Header>
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox Name = "chkSelectAll" VerticalAlignment = "Center"  HorizontalAlignment = "Center" IsChecked = "{Binding IsChecked, ElementName=headerCheckBox, Mode=OneWay}"/>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>

                    <!-- 2nd Column - Consist - Select Fixed or Variable -->
                    <DataGridComboBoxColumn Header = "Consist" Width = "*"  SelectedValueBinding = "{Binding Active}" ItemsSource = "{StaticResource arrList}" DisplayMemberPath = "Key" SelectedValuePath = "Value"/>

                    <!-- 3rd Column - Vehicle Count -->
                    <DataGridTextColumn Header = "Vehicle Count" Width = "*" Binding = "{Binding VehicleCount}"/>


                    <!-- 4th Column - Vehicles List -->
                    <DataGridTemplateColumn Header = "Vehicles" Width = "*">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel x:Name  = "vehicleStackPanel" Orientation = "Horizontal" Margin = "3"/>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>

                    <!-- 5th Column - VATCs Selection Checkbox -->
                    <DataGridTemplateColumn Header = "VATCs" Width = "*">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation = "Horizontal" Margin = "3">
                                    <CheckBox x:Name = "selectVATCA" IsChecked = "False" Margin = "3"/>
                                    <Label Content = "A" Margin = "3"/>
                                    <CheckBox x:Name = "selectVATCB" IsChecked = "False" Margin = "3"/>
                                    <Label Content = "B" Margin = "3"/>
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>

                    <!-- 6th Column - Region -->
                    <DataGridTextColumn Header = "Region" Width = "0.8*" Binding = "{Binding Region}"/>

                    <!-- 7th Column - Segment -->
                    <DataGridTextColumn Header = "Segment" Width = "0.8*" Binding = "{Binding Segment}"/>

                </DataGrid.Columns>
            </DataGrid>
        </ScrollViewer>
        <Button Height = "20" Width = "60" HorizontalAlignment = "Left" Name = "InitTrain" Click = "InitTrain_Click" VerticalAlignment = "Bottom" Margin = "38,0,0,10">Initialize</Button>            
    </Grid>
</Border>

Я ищу такую ​​реализацию, что панели стека должны быть добавлены в столбцы Транспортные средства.

Я пытаюсь получить доступ к ссылке на элемент управления из xaml в файл кода, но не могу найти ссылку. Ниже мой код позади

   public partial class MainWindow : Window, INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    int vehicleCount = 0;
    int region = 0;
    int segment = 0;
    TextBox txtbox = new TextBox();

    // Consist Combobox Items
    public enum Consist { Fixed, Variable };


    public int VehicleCount
    {
        get { return vehicleCount; }
        set
        {
            vehicleCount = value;
            OnPropertyChanged("VehicleCount");

        }
    }

    public int Region
    {
        get { return region; }
        set
        {
            region = value;
            OnPropertyChanged("Region");
        }
    }
    public int Segment
    {
        get { return segment; }
        set
        {
            segment = value;
            OnPropertyChanged("Segment");
        }
    }

    public Consist ConsistList { get; set; }
    public string Vehicles { get; set; }
    public string VATCs { get; set; }

    public MainWindow()
    {
        InitializeComponent();

        for (int i = 1; i <= vehicleCount; i++)
        {
            txtbox.Text = "textbox" + Convert.ToString(i);
            this.vehicleStackPanel.Childern.Add(txtbox);
        }

    }

    private void InitTrain_Click(object sender, RoutedEventArgs e)
    {

    }

    private void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

}

}

Есть ли способ сделать это в XAML, или нам нужен код для этого, если да - как мне продолжить?

Я думаю, вы неправильно понимаете концепцию DataGrid. Невозможно иметь разное количество строк для разных столбцов в DataGrid. Если вам нужно, чтобы эти 3 столбца были одной строкой, извлеките их из DataGrid и поместите в StackPanel или другой контейнер.

dymanoid 03.05.2018 11:07

Вы думаете о линиях мастер -> деталь, где в основной строке есть несколько строк деталей, к которым вы хотите добавить? I.E. у вас есть строка Trucks и подробная сетка, содержащая Ford F-150, Chevy Silverado и т. д.

Kevin Cook 03.05.2018 14:36

@dymanoid: я пытался реализовать логику с помощью stackpanel, я редактировал новые коды и xamls, но я не могу найти ссылку на это сейчас в коде.

NewLearner 04.05.2018 15:17
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
74
0

Другие вопросы по теме