Ссылка на значение, определенное в xaml - PullRequest
1 голос
/ 26 июня 2010

У меня есть несколько элементов управления, которые я хотел бы, чтобы все они имели одинаковую ширину, указанную во время компиляции. Так что либо все они используют ширину 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 ]

2 голосов
/ 26 июня 2010

Вот хороший маленький трюк, который я видел

        <UserControl.Resources> // or wherever it's handy to stick the resource
            <GridLength x:Key="NormalWidth">50</GridLength>
        </UserControl.Resources>

В дополнение к решению проблемы, это позволяет отделить настройку ширины от других свойств стиля, которые вы, возможно, захотите применить (к разной ширине метки),В качестве дополнительного бонуса структура GridLength поддерживает свойство «*» и «Авто», когда вы хотите использовать его для сетки.

Label Width="{StaticResource NormalWidth}"

Cheers,
Berryl

1 голос
/ 26 июня 2010

Самый простой способ - это событие Window Loaded, введите код:

this.DataContext = my_width;

и измените разметку на:

<Label width="{Binding}" content="some text"/>

-

Лучшим способом было бы определить статическое в классе (наиболее вероятно, в вашем классе окна), например:

public static Double LabelWidth = 150;

и использовать его как

<Label Width="{x:Static local:Window1.LabelWidth}" Content="Some Text" />

ПРИМЕЧАНИЕ: у вас будетчтобы добавить ссылку на пространство имен xml, например:

xmlns:local="clr-namespace:WpfApplication1"

в свой класс окна или куда бы вы ни поместили этот ярлык.

-

еще одна простая вещь, которую нужно сделать, это создатьстиль:

<Window.Resources>
    <Style x:Key="LabelStyle">
        <Setter Property="Width" Value="100" />
    </Style>
</Window.Resources>

и используйте его так:

<Label Style="{StaticResource LabelStyle}" Content="Some Text" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...