0

ScrollViewerSizeChangedイベントの関係を説明できる人はいますか? scrollViewer をグリッドの周りに配置するたびに、多数の SizeChanged イベントが発生します。二人の関係は?どうもありがとう。

編集:

mdm20 のコメントから、ScrollViewer の周りにグリッドをラップすると、グリッドの ActualWidth と ActualHeight が継続的に増加することに気付きました。なぜこれが当てはまるのか、誰でも説明できますか?グリッドの幅と高さに厳密な値を設定する必要がありますか?

編集#2:

サイズ変更は、以下に投稿されたコードによって行われます。これを調べてくれてありがとう

    private void chartGrid_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        textCanvas.Width = chartGrid.ActualWidth;
        textCanvas.Height = chartGrid.ActualHeight;
        legendCanvas.Children.Clear();
        chartCanvas.Children.RemoveRange(1, chartCanvas.Children.Count - 1);
        textCanvas.Children.RemoveRange(1, textCanvas.Children.Count - 1);
        AddChart();
    }

対応する XAML コードは次のとおりです。

<ScrollViewer Name="chartScrollViewer">
        <Grid Margin="0" x:Name ="chartGrid" Grid.Column="1" Grid.Row="1" ClipToBounds="True" Background="Transparent" SizeChanged="chartGrid_SizeChanged">
            <Canvas Margin="2" Name="textCanvas" ClipToBounds="True" Grid.Column="1" Grid.Row="1" Height="1200">
                <Canvas Name="chartCanvas" ClipToBounds="True">
                    <Canvas Name="legendCanvas" Background="Transparent" />
                </Canvas>
            </Canvas>
        </Grid>
</ScrollViewer>
4

1 に答える 1

1

あなたはループに陥っています。キャンバスのサイズを変更すると、グリッドがレイアウト パスを実行するように促され、レイアウト パスがScrollViewer実行され、グリッド自体のサイズが変更され、サイクルが最初からやり直されます。

于 2010-10-15T21:47:07.283 に答える