Nouvelle solution/solution de contournement. UserControl peut rester tel quel, nous laisserons la mise à l'échelle au conteneur parent.
Nous ne pouvons pas atteindre Min (Largeur, Hauteur) avec juste UserControl car si nous lui donnons la Hauteur, alors le conteneur parent ne le mettra pas à l'échelle verticalement et il en va de même pour Width. Si nous essayons de les jongler, il y a des situations où nous nous retrouvons dans une boucle de redimensionnement de largeur/hauteur infinie. Ce dont nous avons besoin, c'est d'un autre contrôle caché dans le même espace qui le remplit complètement et qui peut nous dire quelle est sa largeur et sa hauteur à chaque changement. Ensuite, nous pouvons utiliser la solution Math.Min (Width, Height). Quelque chose comme ça. Notez comment les deux contrôles sont dans Grid.Row = "1" et Grid.Column = "1".
<Rectangle Name="availableSpace"
SizeChanged="availableSpace_SizeChanged"
Fill="Transparent"
Grid.Row="1"
Grid.Column="1"/>
<myLib:UserControl1 x:Name="userControl11"
Grid.Row="1"
Grid.Column="1"
HorizontalAlignment="Left"
VerticalAlignment="Top"/>
Et puis dans le availableSpace_SizeChanged EventHandler
private void availableSpace_SizeChanged(object sender, SizeChangedEventArgs e)
{
double minValue = Math.Min(availableSpace.ActualWidth, availableSpace.ActualHeight);
userControl1.Width = minValue;
userControl1.Height = minValue;
}
Maintenant, nous avons 1: 1 de l'UserControl et il sera échelle aussi bien verticalement qu'horizontalement
La première réponse a bien fonctionné, sauf que j'ai besoin à la fois de la Largeur et de la Hauteur pour être Math.Min (Largeur, Hauteur). Comment cela serait-il mis en œuvre? – SuprDewd
Je ne suis pas sûr de comprendre ce que vous voulez dire, la hauteur sera toujours égale à la largeur réelle. Quelle est la valeur Min dans Math.Min (Width, Height)? Une autre valeur ou la largeur/hauteur de votre contrôle? –
Umm ... Je veux Avec et Hauteur être 1: 1. Et si le contrôle est dans une fenêtre de 500x300 (Largeur x Hauteur) alors mon contrôle deviendra, par défaut, 500x300. Ensuite, mon événement SizeChanged se déclenche et le contrôle devient 500x500. Maintenant, sa hauteur sort de la fenêtre. Au lieu de cela, je veux que le contrôle devienne 300x300 (Math.Min (500, 300) = 300). – SuprDewd