Voici la solution que j'ai trouvée. Le canevas peut se développer de manière dynamique, mais vous devrez définir explicitement la hauteur à une nouvelle valeur. Donc, si vous avez 20 blocs de texte d'une hauteur de 21, vous devez définir la hauteur de la toile comme suit: Canvas.Height = 22.0 * 100
; pour que le scrollviewer prenne la nouvelle hauteur.
MainPage.xaml
<Canvas Canvas.Left="5" Canvas.Top="25" >
<ScrollViewer Width="300" Height="700" x:Name="CanSummaryScroller">
<Canvas x:Name="canSummaryCells" >
</Canvas>
</ScrollViewer>
</Canvas>
MainPage.xaml.cs
boxDevSumList est une liste de TextBoxes
for (int i = 0; i < 100; i++)
{
boxDevSumList.Add(new Cell());
(boxDevSumList.ElementAt(i)).Width = 271;
(boxDevSumList.ElementAt(i)).Height = 21;
(boxDevSumList.ElementAt(i)).SetValue(FontFamilyProperty, new FontFamily("Calibri"));
(boxDevSumList.ElementAt(i)).FontSize = 12;
(boxDevSumList.ElementAt(i)).Text = "this is a test";
if (i.Equals(1) || i.Equals(3) || i.Equals(5) || i.Equals(7) || i.Equals(9))
(boxDevSumList.ElementAt(i)).Background = lgBrush;
(boxDevSumList.ElementAt(i)).Opacity = .9;
canSummaryCells.Children.Add(boxDevSumList.ElementAt(i));
boxDevSumList.ElementAt(i).SetValue(Canvas.TopProperty, (double)(i * 21) + 45);
boxDevSumList.ElementAt(i).SetValue(Canvas.LeftProperty, 4.0);
canSummaryCells.Height = 22.0 * 100;
}
Donc, fondamentalement, il n'y a pas de point inverse cette exception pour garder une taille de toile fixe? – Fredrick
Vous pouvez le contourner d'une autre manière mais en y plaçant une barre de défilement non liée et en associant la valeur du défilement à une transformation de traduction appliquée en tant que partie du groupe de transformation sur le canevas. (Un groupe de transformation permettant plusieurs transformations.) De cette façon, vous pouvez faire défiler, sans une taille de canevas explicite, et la limite du défilement est alors définie par les valeurs que vous avez utilisées pour la barre/transformation. – Andrew