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 回答