1

私は次のコードを持っています:

        for (int i = 0; i < 4; i++)
        {

            TextBlock Tb = new TextBlock();
            Tb.Text = k[3+i];
            Tb.Width = 205*((i<2)?1:0.5);
            Tb.Height = (stala*10)/3;
            Tb.Margin = margin;
            margin.Top += ((stala * 10) / 3);
            this.Str1.Children.Add(Tb);

        }

テキストブロックが追加されますが、ほんの一瞬です...アニメーションが停止すると、コントロールも消えます...誰かが理由を教えてもらえますか?

4

1 に答える 1

0

いいえ、実行時に設計時に数量が不明な一連の繰り返しコントロールが必要な場合、正しい方法は、itemscontrolまたはgridviewなどのitemscontrolから継承するコントロールを使用し、そのitemscontrolを値observablecollectionのプロパティにバインドすることです。次に、observablecollectionのメンバーを操作すると、itemscontrolは、itemtemplateプロパティに従って対応するコントロールを作成します。

<ItemsControl ItemsSource="{Binding}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel>
                <StackPanel.ChildrenTransitions>
                    <AddDeleteThemeTransition />
                </StackPanel.ChildrenTransitions>
            </StackPanel>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBox Text="{Binding}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

さらに、アニメーションが必要な場合は、itemscontrolのitemspanelで、アニメーションライブラリの何かを使用してchildrentransitionsを設定できます。

バインディングはあなたにとって新しいかもしれないように思えます。ここでトピックに関する私の入門書を確認することをお勧めします:http://blog.jerrynixon.com/2012/10/xaml-binding-basics-101.html

于 2013-03-04T22:31:20.067 に答える