引用xaml中定义的值

时间:2010-06-25 22:30:36

标签: wpf xaml

我有几个控件,我希望它们共享相同的宽度,在编译时指定。所以要么它们都使用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"/>

2 个答案:

答案 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>