2016-04-14 39 views
1

スタックパネル内のボタンクリックに基づいてテキストボックスを動的に追加しています。ただし、テキストボックスはUIでは表示されません。 ここには、スタックパネル内にテキストボックスを作成するためのコードがあります。スタックパネルの動的に追加されたコントロールがwpfで表示されないc#

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

なぜその目に見えない... ??と、ここでは、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> 
+1

xamlコードを押してください。あなたのパネルの「高さ」の問題かもしれないと思います。あるいは、あなたのパネル1は他のコントロールによって覆われているかもしれません。 –

+1

あなたのコードは正しいです、そこに問題があるはずです。 – bitbonk

+0

xamlコードが更新されました – Arshad

答えて

1

のXAMLの一部であり、あなたが動的にコントロールを追加しようとしている場合は、高さ(あるいは幅)を制限しませんあなたが追加しているコンテナの

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(); 
} 
1

xamlコードでは、 'panel'にスタックパネルがあり、 'panel'の1番目の子になります。

高さは144pxです。あなたの「panel1」は151 pxです。

「パネル」にテキストボックスを追加すると、144pxのスタックパネルの後ろにテキストボックスが表示されます。

これを表示するには7pxしかありません。彼らはあなたの窓に表示されません。

関連する問題