MyControl.Margin.Left = 10;
Erreur:
Impossible de modifier la valeur de retour de 'Système.De Windows.FrameworkElement.Marge car il n'est pas une variable
MyControl.Margin.Left = 10;
Erreur:
Impossible de modifier la valeur de retour de 'Système.De Windows.FrameworkElement.Marge car il n'est pas une variable
Le problème est qu' Margin
est une propriété et son type (Thickness
) est un type de valeur. Cela signifie que lorsque vous accédez à la propriété, vous obtenez une copie de la valeur de retour.
Même si vous pouvez modifier la valeur de l' Thickness.Left
des biens pour une valeur particulière (grr... mutable types de valeur ne devrait pas exister), il ne serait pas changer la marge.
Au lieu de cela, vous aurez besoin de mettre de l' Margin
de la propriété à une nouvelle valeur. Par exemple (par coïncidence, le même code que Marc a écrit):
Thickness margin = MyControl.Margin;
margin.Left = 10;
MyControl.Margin = margin;
Comme une note pour la conception d'une bibliothèque, j'aurais largement préféré qu' Thickness
étaient immuables, mais avec des méthodes qui ont renvoyé une nouvelle valeur qui est une copie de l'original, mais avec une partie remplacé. Ensuite, vous pouvez écrire:
MyControl.Margin = MyControl.Margin.WithLeft(10);
Sans se soucier de comportement étrange de mutable types de valeur, agréable et lisible, tous d'une expression...
L' Margin
propriété renvoie un Thickness
de la structure, dont Left
est une propriété. Ce que la déclaration n'est la copie de la valeur de la structure de l' Margin
propriété et le réglage de la Left
de la valeur de propriété sur la copie. Vous obtenez une erreur parce que la valeur que vous définissez ne sera pas stocké dans l' Margin
de la propriété.
(Les versions antérieures de C# voudrais juste vous laisser faire cela, sans se plaindre, causant beaucoup de questions dans les forums de discussion et des forums sur le pourquoi d'une telle déclaration n'a eu aucun effet du tout...)
Pour définir la propriété, vous devrez obtenir l' Thickness
structure en Margin
de la propriété, définissez la valeur et le stocker à l'arrière:
Thickness m = MyControl.Margin;
m.Left = 10;
MyControl.Margin = m;
Si vous voulez toutes les marges, il suffit de créer un Thickness
de la structure et de les mettre tous à la fois:
MyControl.Margin = new Thickness(10, 10, 10, 10);
Pour utiliser Thickness
vous avez besoin pour créer et/ou modifier votre projet .NET framework
version de plate-forme à 4.5. tenir à cette méthode uniquement disponible dans la version 4.5. (Vous pouvez aussi tout simplement télécharger PresentationFramework.dll et donner referense à cette dll, sans créer/modifier votre .NET framework
version 4.5.)
Mais si vous voulez faire simple, Vous pouvez utiliser ce code:
MyControl.Margin = new Padding(int left, int top, int right, int bottom);
aussi
MyControl.Margin = new Padding(int all);
C'est simple et pas besoin de tout changement à votre projet
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.