我有几个控件,我希望它们共享相同的宽度,在编译时指定。所以要么它们都使用10的宽度,所有都使用20的宽度等等。
一次定义此值的正确方法是什么,并将其用作从那里开始的变量?
“给你的想法”伪代码:
double my_width = 10;
<Label width=my_width content="some text"/>
<Label width=my_width content="some text"/>
<Label width=my_width content="some text"/>
<Label width=my_width content="some text"/>
答案 0 :(得分:2)
这是我见过的一个不错的小技巧
<UserControl.Resources> // or wherever it's handy to stick the resource
<GridLength x:Key="NormalWidth">50</GridLength>
</UserControl.Resources>
除了解决问题之外,还可以将宽度设置与您可能要应用的其他样式属性(不同的标签宽度)分开。另外,GridLength结构支持“*”和“Auto”属性,以便在实际将其用于网格时使用。
Label Width="{StaticResource NormalWidth}"
干杯,
Berryl
答案 1 :(得分:1)
最简单的方法是Window
的{{1}}事件,请输入以下代码:
Loaded
并将标记更改为:
this.DataContext = my_width;
-
更好的方法是在类中定义静态(最可能是你的窗口类),如:
<Label width="{Binding}" content="some text"/>
并将其用作
public static Double LabelWidth = 150;
注意:您必须添加xml命名空间引用,如:
<Label Width="{x:Static local:Window1.LabelWidth}" Content="Some Text" />
在您的窗口类或您放置此标签的任何位置。
-
另一个简单的事情是创建一个样式:
xmlns:local="clr-namespace:WpfApplication1"
并像这样使用它:
<Window.Resources>
<Style x:Key="LabelStyle">
<Setter Property="Width" Value="100" />
</Style>
</Window.Resources>