Как я могу определить переменную в XAML? - PullRequest
49 голосов
/ 18 мая 2009

У меня есть следующие две кнопки в XAML:

<Button Content="Previous"
        Margin="10,0,0,10"/>
<Button Content="Next"
        Margin="0,0,10,10"/>

Как я могу определить «10» как переменную, чтобы я мог изменить ее в одном месте, примерно так:

КОД PSEUDO:

<variable x:key="theMargin"/>
<Button Content="Previous"
        Margin="{Variable theMargin},0,0,{Variable theMargin}"/>
<Button Content="Next"
        Margin="0,0,{Variable theMargin},{Variable theMargin}"/>

Ответы [ 4 ]

82 голосов
/ 18 мая 2009

Попробуйте это:

добавить в начало 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 и т. Д.

Примечание: Вы правы ... Пришлось провести более качественное тестирование ... изменилось на код, чтобы он работал

2 голосов
/ 07 апреля 2017

Аналогично ответу Sorskoot, вы можете добавить ресурс толщины для использования, тем самым определяя каждое направление поля независимо

<UserControl.Resources>
    <Thickness x:Key="myMargin" Top="5" Left="10" Right="10" Bottom ="5"></Thickness>
</UserControl.Resources>

Тогда просто используйте толщину в качестве поля:

<Button Content="Next" Margin="{StaticResource myMargin}"/>
1 голос
/ 16 сентября 2012

Вам необходимо вызвать это до InitializeComponent или использовать интерфейс INotifyPropertyChanged после этого

1 голос
/ 18 мая 2009

Почему бы вам не попробовать добавить значение как 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}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...