我如何在XAML中定义一个variables?

我在XAML中有以下两个button:

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

我如何定义“10”是一个variables,所以我可以在一个地方改变它,像这样:

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}"/> 

尝试这个:

添加到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> 

很多系统types可以这样定义:int,char,string,DateTime等

注意:你是对的…不得不做一些更好的testing..更改为代码,以便它应该工作

为什么不尝试添加值作为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}"/> 

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

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

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

那么只需使用厚度作为边距:

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

在代码隐藏文件中将其声明为(可能是静态只读或常量)字段。