我在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}"/>
答案 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"