Partager via


Margin in XAML vs. CSS

According to W3C:

“The 'margin' property is a shorthand property for setting 'margin-top', 'margin-right', 'margin-bottom', and 'margin-left' at the same place in the style sheet” respectively. Here’s the example W3C used to illustrate the order of properties in the shorthand:

 margin: 10px 20px 30px 40px;

Top padding is 10px, right padding is 20px, bottom padding is 30px, left padding is 40px.

If you’re like me, used to CSS, you will have a problem getting adjusted to the margin property in XAML:

 <object Margin="left,top,right,bottom"/>

You see, the type of this property is System.Windows.Thickness, and its constructor looks like this:

 public Thickness(
    double left,
    double top,
    double right,
    double bottom
)

So, you will have to perform a mental shift when you go back and forth between the two formats, or you can use the explicit properties instead:

In CSS:

 .class {
    margin-top: 10px;
    margin-bottom: 20px;
    margin-right: 30px;
    margin-left: 40px;
}

In XAML:

 <object>
  <object.Margin>
    <Thickness Left="left" Top="top" Right="right" Bottom="bottom"/>
  </object.Margin>
</object>