D
D
dr5y51em2018-08-22 21:56:14
WPF
dr5y51em, 2018-08-22 21:56:14

C# WPF programmatically creating a button?

Explain how to programmatically add a button?
We have a Grid with a GroupBox placed in it. Everywhere they say you need to use Children.Add(); But I don't have an object like Children.

MainWindow.xaml
<Window x:Class="MApp.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:local="clr-namespace:MApp"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <GroupBox Header="" HorizontalAlignment="Left" Height="100" Margin="10,67,0,0" VerticalAlignment="Top" Width="772" Name="ConfigsBox"/>
        <Button Name="TestBTN" Content="Add" Height="50" VerticalAlignment="Bottom" Click="TestBTN_Click"></Button>
    </Grid>
</Window>
MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace MApp
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            ConfigManager.Init();
        }

        private void TestBTN_Click(object sender, RoutedEventArgs e)
        {
            Button newButton = new Button();
            GroupBox.Children.Add(newButton);
        }

    }
}

Answer the question

In order to leave comments, you need to log in

2 answer(s)
P
Peter, 2018-08-22
@dr5y51em

For you, the designer creates a variable in the behind class that is specified in the name property of the component, that is,
ConfigsBox.
Update: GroupBox implements the IAddChild interface, which allows you to accept a single nested control, so ConfigsBox.Children.Add(newButton); I wrote you wrong.
The software addition will:

var button = new Button();
((IAddChild)ConfigsBox).AddChild(button);

R
Roman, 2018-08-23
@WNeZRoS

GroupBox in WPF does not have Children, but it does have Content. In Content, you need to put some kind of panel, and only then you can add elements to this panel (it has Children).

<GroupBox Header="" HorizontalAlignment="Left" Height="100" Margin="10,67,0,0" VerticalAlignment="Top" Width="772">
    <StackPanel Name="ConfigsBox" />
</GroupBox>

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question