Как я могу создавать и отображать содержимое WPF из кода C#?

Я работаю над приложением WPF, и я хотел бы создать все окно из кода C#, а не из XML.

Я попробовал следующий код, но ничего не происходит, сетка не отображается. Я что-то пропустил? Можно ли так сделать или есть другое решение?

public MainWindow()
{
    Grid grd = new Grid();
    grd.Margin = new System.Windows.Thickness(10, 10, 10, 0);
    grd.Background = new SolidColorBrush(Colors.White);
    grd.Height = 104;
    grd.VerticalAlignment = System.Windows.VerticalAlignment.Top;
    grd.ColumnDefinitions.Add(new ColumnDefinition());
    grd.ColumnDefinitions.Add(new ColumnDefinition());
    grd.ColumnDefinitions.Add(new ColumnDefinition());

    RowDefinition row = new RowDefinition();
    row.Height = new System.Windows.GridLength(45);
    grd.RowDefinitions.Add(row);

    row = new RowDefinition();
    row.Height = new System.Windows.GridLength(45);
    grd.RowDefinitions.Add(row);

    row = new RowDefinition();
    row.Height = new System.Windows.GridLength(45);
    grd.RowDefinitions.Add(row);
    InitializeComponent();
}

1 ответ

Решение

Grid grd был создан, но не добавлен в Window.

InitializeComponent();
this.Content = grd;

он заменит весь контент, объявленный в XAML (если есть).

Однако сетка является панелью и сама не имеет визуального представления, поэтому окно с сеткой без дочернего элемента все равно будет выглядеть пустым. Пытатьсяgrd.ShowGridLines = true; чтобы увидеть строки и столбцы

Документация по сетке показывает большой пример с эквивалентным кодом C# и разметкой xaml.

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