0

私の問題のコードは次のとおりです。

private void button1_Click(object sender, RoutedEventArgs e)
{
    Rectangle1.Fill = color;
    for (int i = 0; i < 1000; i++)
    {
        StackPanel1.Children.Add(new TextBlock() { Text = "TestBlock" });
    }
}

もちろん、TextBlocks が StackPanel に追加されるまでには時間がかかります。しかし、何らかの理由で、四角形のレイアウトが StackPanel と同時に更新されます。長方形を強制的に更新することで、この問題を解決しようとしました

Rectangle1.UpdateLayout();

TextBlocks が StackPanel に追加される前。しかし、それもうまくいきませんでした。では、StackPanel にアイテムを追加し始める前に、四角形の色を変更するにはどうすればよいでしょうか?

手がかりがありません。

4

3 に答える 3

1

UpdateLayoutレイアウトが変更されていない場合は効果がありません。これはあなたの場合です。

呼び出す必要があるのは ですInvalidateVisual。ただし、これはあまり良い方法ではありません。Fill inMouseLeftButtonDownイベントを変更したいと思います。

XAML :

 <Button MouseLeftButtonDown="PreviewChangeRectangle" ...>

C#:

private void PreviewChangeRectangle(object sender, RoutedEventArgs e)
{
 Rectangle1.Fill = color;
}
于 2012-07-05T13:35:52.647 に答える