在XAML中设置动态值

时间:2011-12-01 19:56:53

标签: wpf xaml dynamic-controls

我有一个Grid控件,我想在XAML中设置margin属性并将它们从SystemInformation.CaptionHeight拉出来。我已经想出如何在C#中做到这一点,但我想在XAML中做到这一点。

我之前没有使用资源来设置这样的东西,但我尝试过类似

的变体
<Grid>
   <Grid.Margin>
      <Thickness Top="{StaticResource {x:Static Forms:SystemInformation.CaptionHeight}}" Left="5" Right="5" Bottom="5" />
   </Grid.Margin>
</Grid>

<Grid>
   <Grid.Margin>
      <Thickness Top="{x:Static Forms:SystemInformation.CaptionHeight}" Left="5" Right="5" Bottom="5" />
   </Grid.Margin>
</Grid>

但无济于事。如何在运行时动态设置这样的属性?

1 个答案:

答案 0 :(得分:1)

使用Binding,但指定Source是静态的并将其指向属性的位置

此外,Thickness.Top不是DependencyProperty,因此您无法绑定它。您最好的替代方法是使用转换器绑定Grid.Margin,转换器获取double值并将其转换为Thickness属性。

<Grid Margin="{Binding 
          Source={x:Static Forms:SystemInformation.CaptionHeight},
          Converter={StaticResource MyDoubleToMarginConverter}}" />