Je suis perplexe face à un problème que j'éprouve en utilisant ScaleTransform. J'ai une grille avec une largeur et une hauteur fixes. La grille contient un enfant, un rectangle. Le remplissage du rectangle est un VisualBrush dont le visuel se lie à une toile en dehors de la grille, dont les dimensions sont plutôt grandes. Sur le rectangle, j'utilise un ScaleTransform, avec ScaleX et ScaleY étant tous les deux mis à 0.18. Essentiellement, j'essaie de redimensionner le visuel du Rectangle pour qu'il corresponde à ma grille. Ce qui semble se passer, c'est que la grille elle-même est réduite, ce qui entraîne un résultat beaucoup plus faible que ce que je veux. J'ai inclus le code ci-dessous. Juste comme point de référence, la hauteur et la largeur que le rectangle attache sont essentiellement 900 par 600, respectivement. Toute indication sur ce que je pourrais faire de mal serait grandement appréciée.WPF Scaling Version
<Grid Height="225" Width="200" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="PART_Content">
<Rectangle Height="{Binding Path=ActualHeight}" Width="{Binding Path=ActualWidth}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Rectangle.Fill>
<VisualBrush Visual="{Binding}"/>
</Rectangle.Fill>
<Rectangle.RenderTransform>
<ScaleTransform ScaleX="0.183" ScaleY="0.183"/>
</Rectangle.RenderTransform>
</Rectangle>
</Grid>
ActualHeight et ActualWidth sont en lecture seule DependencyProperties. Il n'y a aucune raison que vous ne puissiez pas les utiliser comme source de liaison comme le fait Chris - Source peut être n'importe quelle propriété CLR. C'est seulement la cible qui doit être un DP. Dans ce cas, vous ne pouvez pas affecter une valeur à l'un d'entre eux car ils sont en lecture seule et ne peuvent donc pas être utilisés comme cible. –
"Source peut être n'importe quelle propriété CLR" * mais * pour que la liaison ait du sens, elle doit être sauvegardée par INotifyPropertyChanged. Cela dit, j'ai dit que je pourrais me tromper que ce ne sont pas des DP. Franchement, je trouve ce code très étrange. Si en effet il veut se lier à ActualHeight et à ActualWidth il devrait utiliser TemplateBinding et non Binding. Vous utilisez la liaison lorsque vous souhaitez lier à quelque chose dans le datacontext et je suis assez certain qu'il n'a pas ActualHeight/Width dans sa VM. – NVM