繁体   English   中英

在wpf c#中看不到stackpanel中动态添加的控件

[英]Dynamically added controls in stackpanel is not visible in wpf c#

我基于stackpanel内部的按钮单击动态添加文本框。但是文本框在UI中不可见。 以下是用于在stackpanel中创建文本框的代码。

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

为什么它不可见.. ??这里是stackpanel的XAML部分

<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>

如果要动态添加控件,请不要限制要添加的容器的高度(甚至宽度)。

更新您的XAML以具有自动高度/宽度。

<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>

此外,添加新子项后,请确保更新StackPanel布局。

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

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

在您的xaml代码中,“面板”中有一个堆栈面板,它将是“面板”的第一个子节点。

它的高度是144px。 你的'panel1'是151像素。

因此,当您将文本框添加到“面板”时,它们将显示在144px堆栈面板后面。

显示它们只有7px。 因此它们不会显示在您的窗口上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM