Gets or sets the outer margin of a FrameworkElement.
<frameworkElement Margin="uniform"/> - or - <frameworkElement Margin="left+right,top+bottom"/> - or - <frameworkElement Margin="left,top,right,bottom"/>
- uniform A value measured in pixels that specifies a uniform Thickness. The uniform value is applied to all four Thickness properties (Left, Top, Right, Bottom).
- left+right A value measured in pixels that specifies the Left and Right of a symmetrical Thickness.
- top+bottomA value measured in pixels that specifies the Top and Bottom of a symmetrical Thickness.
- left top right bottom
- left top right bottom Values measured in pixels that specify the four possible dimension properties of a Thickness (Left, Top, Right, Bottom). In the XAML syntaxes shown previously, you can also use a space instead of a comma as the delimiter between values.
Margin behavior and layout
Margins are additive for peer objects in a layout; for example, two horizontally or vertically adjacent objects both with a margin of 30 set on the adjoining edge would have 60 pixels of space between them.
Objects that have margins set will not typically constrain the size of the specified Margin if the allotted rectangle space is not large enough for the margin plus the object's content area. The content area will be constrained instead when layout is calculated. The only case where margins would be constrained also is if the content is already constrained all the way to zero. However, this behavior is ultimately controlled by the specific type that is interpreting Margin, as well as the layout container of that object.
Negative values for margin dimensions are permitted, but should be used with caution (and be aware that negative margins can be interpreted differently by different class layout implementations). Negative margins typically clip the content of the object in that direction.
Non-integral values for margin values are technically permitted, but should typically be avoided.
Margin and Padding
A related concept is padding. For an object and its bounding box, the margin is extra space that is allocated to the outside of the bounding box when the UI element is contained and rendered. Padding is the area inside the bounding box, and affects the layout of any additional content or child objects inside the element. FrameworkElement does not define a padding property, However, several derived classes do define a Padding property. These include:
- ItemsPresenter.Padding For more info about the relationship between margin and padding, see Alignment, margin, and padding or Define layouts with XAML.
This example sets Margin in code as part of a larger scenario of creating a UI element at run time, and then setting various layout-related properties. This is often done prior to adding a new element to an existing XAML UI page's object tree. In this case several Margin properties are set using a new Thickness created with the uniform-value constructor.