Проблема в том, что Margin
является свойством, а его тип (Thickness
) является типом значения. Это означает, что при доступе к свойству вы получаете копию значения обратно.
Даже если вы можете изменить значение свойства Thickness.Left
для определенного значения (grr ... типы изменяемых значений не должны существовать), оно не будет изменить маржу.
Вместо этого вам нужно установить для свойства Margin
новое значение. Например (по совпадению тот же код, что и Марк):
Thickness margin = MyControl.Margin;
margin.Left = 10;
MyControl.Margin = margin;
В качестве примечания по дизайну библиотеки, я бы предпочел его, если бы Thickness
были неизменяемыми, но с методами, которые возвращали новое значение, которое было копией оригинала, но с заменой одной части. Тогда вы могли бы написать:
MyControl.Margin = MyControl.Margin.WithLeft(10);
Не беспокойтесь о странном поведении изменяемых типов значений, хороших и читаемых, все одно выражение ...