stackpanel 中动态添加的控件在 wpf c# 中不可见
Dynamically added controls in stackpanel is not visible in wpf c#
我根据 stackpanel.But 中的按钮单击动态添加文本框,文本框在 UI 中不可见。
这是用于在堆栈面板中创建文本框的代码。
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 以获得自动 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>
此外,添加新子项后,请确保更新 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 代码中,您的 'panel' 中有一个堆栈面板,它将是 'panel' 的第一个 child。
它的高度是144px。您的 'panel1' 是 151 像素。
因此,当您将文本框添加到 'panel' 时,它们将显示在 144px 堆栈面板的后面。
显示它们只有7px。因此它们不会显示在您的 window 上。
我根据 stackpanel.But 中的按钮单击动态添加文本框,文本框在 UI 中不可见。 这是用于在堆栈面板中创建文本框的代码。
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 以获得自动 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>
此外,添加新子项后,请确保更新 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 代码中,您的 'panel' 中有一个堆栈面板,它将是 'panel' 的第一个 child。
它的高度是144px。您的 'panel1' 是 151 像素。
因此,当您将文本框添加到 'panel' 时,它们将显示在 144px 堆栈面板的后面。
显示它们只有7px。因此它们不会显示在您的 window 上。