Search code examples
wpfsilverlightmarginstyling

How can I specify a margin as a percentage?


I have just started using WPF. I'm getting my head around styling system since. I come from a CSS background and I would like to set margin in percentage.

    <Style TargetType="TextBlock" x:Key="workflowNameTextBlock">            
        <Setter Property="Margin" Value="50"/>            
    </Style>

Currently value is set in pixels, but I would like to set it in %, i.e. 50%.

How can I achieve this?


Solution

  • Here's how you implement 20% left and right margins in WPF:

    <Grid>
       <Grid.ColumnDefinitions>
          <ColumnDefinition Width="2*"/>
          <ColumnDefinition Width="6*"/>
          <ColumnDefinition Width="2*"/>
       </Grid.ColumnDefinitions>
       <TextBlock Grid.Column="1" Text="Hello, world."/>
    </Grid>
    

    This may seem ridiculously verbose if what you're trying to do is re-implement a simple CSS layout in WPF, but that's because implementing simple CSS layouts is really not the problem space WPF is designed around.