我如何在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}"/>
在代码隐藏文件中将其声明为(可能是静态只读或常量)字段。