Dah Sra
Dah Sra

Reputation: 4425

Dynamically added controls in stackpanel is not visible in wpf c#

I am dynamically adding textboxes based on a button click inside the stackpanel.But the textboxes are not visible in the UI . Here is the code used for creating textboxs inside stackpanel.

 public void GenerateControls()
 {
     TextBox txtNumber = new TextBox();
     txtNumber.Name = "txtNumber";
     txtNumber.Text = "1776";
     txtNumber.Background= Brushes.Red;
     panel1.Children.Add(txtNumber);
 }

why its not visible..??and here is the XAML part of stackpanel

<StackPanel Name="panel1" Grid.Column="1" HorizontalAlignment="Left" Height="151" Margin="427,60,0,0" Grid.Row="2" VerticalAlignment="Top" Width="216">
    <StackPanel Height="144">

    </StackPanel>
</StackPanel>

Upvotes: 1

Views: 7483

Answers (2)

Chris Shao
Chris Shao

Reputation: 8231

In your xaml code, there is a stackpanel in your 'panel', it will be the 1st child of 'panel'.

And its height is 144px. your 'panel1' is 151 px.

So when you add textboxes into 'panel', they will be displayed behind the 144px stackpanel.

There is only 7px to display them. So they will not display on your window.

Upvotes: 1

d.moncada
d.moncada

Reputation: 17392

If you are going to be adding controls dynamically, do not restrict the height (or even width) of the container you are adding to.

Update your XAML to have auto height/width.

<StackPanel Name="panel1" 
            Grid.Column="1"
            Height="Auto"
            Width="Auto" 
            Margin="427,60,0,0" 
            Grid.Row="2" 
            VerticalAlignment="Top"
            HorizontalAlignment="Left" >
    <StackPanel Height="144">

    </StackPanel>
</StackPanel>

Also, once you add a new child, make sure you are updating the StackPanel layout.

public void GenerateControls()
{
    TextBox txtNumber = new TextBox();
    txtNumber.Name = "txtNumber";
    txtNumber.Text = "1776";
    txtNumber.Background= Brushes.Red;

    panel1.Children.Add(txtNumber);
    panel1.UpdateLayout();
}

Upvotes: 3

Related Questions