2010-10-15 3 views
0

Может ли кто-нибудь объяснить мне связь между ScrollViewer и SizeChanged событиями? Всякий раз, когда я помещаю scrollViewer вокруг сетки, происходит большое событие SizeChanged. Какова взаимосвязь между ними? Большое спасибо.wpf ScrollViewer и событие SizeChanged

EDIT:

От комментария mdm20, я заметил, что ActualWidth и ActualHeight сетки непрерывно возрастает, если я обернуть сетки вокруг ScrollViewer. Может ли кто-нибудь объяснить, почему это так? Нужно ли иметь жесткие значения для ширины и высоты сетки?

EDIT # 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> 
+0

Увольняют ли они только когда окно загружено или постоянно? – Mark

+0

Его при загрузке окна. Я не могу загрузить загрузку окна из-за постоянных вызовов – thomas1234

+0

Что находится внутри сетки? Вы меняете размер чего-либо в событии sizechanged, создавая цикл? – mdm20

ответ

0

Вы получаете в петлю. Я думаю, что происходит то, что когда вы меняете размер холста, он предлагает сетке сделать макетный проход, из-за которого ScrollViewer выполняет прохождение макета, что приводит к изменению размера сетки, которая снова начинает цикл.