none
ストアアプリ開発 コントロールの動的配置/動的生成について RRS feed

  • 質問

  • ストアアプリ開発について

    開発環境

    • OS:windows8.1
    • 使用製品:Visual Studio 2013
    • 言語:C#/Xaml
    • 使用プロジェクト:ストアアプリ/空のアプリケーション

    タイトルの通りストアアプリでボタンなどのコントロールを動的に実装する方法について質問があります。

    具体的にはButton1を押したとき、新たに別のコントロールTextBoxを配置するプログラムについて、インスタンスの生成まではできたものの、配置の方法が分からず行き詰ってしまいました。

            private void Button_Click(object sender, RoutedEventArgs e)
            {
                    //  テキストブロックの生成
                TextBlock tb1 = new TextBlock();
                    //  プロパティ
                tb1.Width = 100;
                tb1.Height = 50;
                tb1.Text = "testtext";
    
                    //  配置ために必要な処理↓(?)
                
    
            }

    フォームアプリケーションの場合ならばControl.Add(tb1)で追加できると思うのですが、使用するディレクティブが違うためかControl.Addは使えないようです。ストアアプリの場合どういった処理が必要なのでしょうか?

    C#についてはまだまだ無知な部分が多い私ですが、ぜひご教示いただければ幸いです。

    どうぞよろしくお願いします。
    • 編集済み 黒糖 2015年5月12日 7:38
    2015年5月12日 7:35

回答

  • こんにちは。

    画面上のどこに配置したいかによって若干変わりそうですが。
    StackPanelであれば以下なかんじでしょうか。

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <StackPanel Name="hoge" />
        <Button Grid.Row="1" Content="hoge" Click="Button_Click" />
    </Grid>
    
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        hoge.Children.Add(new TextBox());
    }
    


    • 回答としてマーク 黒糖 2015年5月12日 8:19
    2015年5月12日 7:59
    モデレータ

すべての返信

  • こんにちは。

    画面上のどこに配置したいかによって若干変わりそうですが。
    StackPanelであれば以下なかんじでしょうか。

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <StackPanel Name="hoge" />
        <Button Grid.Row="1" Content="hoge" Click="Button_Click" />
    </Grid>
    
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        hoge.Children.Add(new TextBox());
    }
    


    • 回答としてマーク 黒糖 2015年5月12日 8:19
    2015年5月12日 7:59
    モデレータ
  • この方法ならばmarginなどでレイアウトを整えることで多様することができそうですね。

    StackPanelの活用方法も理解することもできました。

    迅速な回答ありがとうございました。

    2015年5月12日 8:26