如何在XAML中定义变量?

时间:2009-05-18 11:42:38

标签: wpf xaml variables

我在XAML中有以下两个按钮:

<Button Content="Previous"
        Margin="10,0,0,10"/>
<Button Content="Next"
        Margin="0,0,10,10"/>

如何将“10”定义为变量,以便我可以在一个地方更改它,如下所示:

PSEUDO CODE:

<variable x:key="theMargin"/>
<Button Content="Previous"
        Margin="{Variable theMargin},0,0,{Variable theMargin}"/>
<Button Content="Next"
        Margin="0,0,{Variable theMargin},{Variable theMargin}"/>

5 个答案:

答案 0 :(得分:82)

试试这个:

添加到xamlfile的头部

xmlns:System="clr-namespace:System;assembly=mscorlib"

然后将其添加到资源部分:

<System:Double x:Key="theMargin">2.35</System:Double>

最后,在边距上使用厚度:

<Button Content="Next">
   <Button.Margin>
      <Thickness Top="{StaticResource theMargin}" Left="0" Right="0"
                  Bottom ="{StaticResource theMargin}" />
   </Button.Margin>
</Button>

可以用这种方式定义很多系统类型:int,char,string,DateTime等

注意: 你是对的...必须做一些更好的测试..改为代码,以便它可以工作

答案 1 :(得分:2)

与Sorskoot的答案类似,您可以添加要使用的厚度资源,从而独立定义每个边距方向

<UserControl.Resources>
    <Thickness x:Key="myMargin" Top="5" Left="10" Right="10" Bottom ="5"></Thickness>
</UserControl.Resources>

然后只使用厚度作为保证金:

<Button Content="Next" Margin="{StaticResource myMargin}"/>

答案 2 :(得分:1)

为什么不尝试将该值添加为StaticResource

Resources.Add("theMargin", 10);

然后你就可以得到这样的价值:

<Button Content="Previous"
        Margin="{StaticResource theMargin},0,0,{StaticResource theMargin}"/>
<Button Content="Next"
        Margin="0,0,{StaticResource theMargin},{StaticResource theMargin}"/>

答案 3 :(得分:1)

您需要在InitializeComponent之前调用它,或者在此之后使用INotifyPropertyChanged接口

答案 4 :(得分:0)

在.NET Core中,@ Sorskoot的回答起作用了,但产生了警告。因此,我改用了这个命名空间声明:

xmlns:system="clr-namespace:System;assembly=System.Runtime"