Question

Quelqu'un peut-il me expliquer la relation entre ScrollViewer et événement SizeChanged? Chaque fois que je mets un ScrollViewer autour d'une grille, de nombreux événements SizeChanged est congédié. Quelle est la relation entre les deux? Merci beaucoup.

EDIT:

Du commentaire de mdm20, je remarque que le ActualWidth et ActualHeight de la grille augmente de façon continue si j'enrouler la grille autour d'un ScrollViewer. Quelqu'un peut-il expliquer pourquoi il en est le cas? Ai-je besoin d'avoir des valeurs dures pour la largeur et la hauteur de la grille?

EDIT # 2:

Le changement de taille se fait par le code affiché ci-dessous. Merci pour la recherche dans ce

    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();
    }

correspondant du code XAML est ci-dessous:

<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>
Était-ce utile?

La solution

Vous obtenez une boucle. Je pense que ce qui se passe est que lorsque vous modifiez la taille de la toile, il invite la grille à faire une passe de mise en page, ce qui provoque la ScrollViewer de faire une passe de mise en page, ce qui provoque la grille de se redimensionner, qui démarre le cycle recommence.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top