Главная » WPF » Обобществление информации о размере

0

Общий  размер – это последнее из значимых  средств, встроенных  в менеджер Grid.  Сетка  делает информацию о размере  доступной  всем элементам  управле# ния, расположенным в одном столбце. В простейшем случае это означает, что все такие элементы будут иметь одинаковый размер, определяемый самым широким из них. Для  иллюстрации модифицируем пример,  так чтобы надпись  на одной кнопке была заметно длиннее, чем на остальных,  и поместим  все кнопки  в один столбец (рис. 4.23):

Рис. 4.24. Сетка с обобществленением размеров и без него

Для  обобществления размеров  нужно  сделать  две вещи: во#первых, устано# вить свойство  SharedSizeGroup для одной или нескольких  строк (столбцов), а, во#вторых, – свойство  IsSharedSizeScope для  элемента  управления. В первом примере  мы обобществим  информацию о размере двух столбцов  в одной и той же сетке:

<Grid IsSharedSizeScope=’true’>

<Grid.RowDefinitions>

<RowDefinition />

<RowDefinition />

</Grid.RowDefinitions>

<Grid.ColumnDefinitions>

<ColumnDefinition Width=’Auto’ SharedSizeGroup=’a’ />

<ColumnDefinition Width=’Auto’ SharedSizeGroup=’a’ />

</Grid.ColumnDefinitions>

<Button Grid.Row=’0’ Grid.Column=’0’>One</Button>

<Button Grid.Row=’0’ Grid.Column=’1’>Two</Button>

<Button Grid.Row=’1’ Grid.Column=’0’>Three (which is longer)</Button>

<Button Grid.Row=’1’ Grid.Column=’1’>Four</Button>

</Grid>

А на десерт сделаем то же самое для нескольких  сеток. Свойство IsSharedSizeScope можно задать локально  для элемента  Grid  или как присоеди# ненное свойство для любого элемента.  Чтобы обобществить информацию о раз# мере, сделаем контекстом  родительскую панель  StackPanel, а затем поместим  в одну группу два элемента Grid с одинаковым именем:

<StackPanel Orientation=’Vertical’ Grid.IsSharedSizeScope=’true’>

<Grid>

<Grid.RowDefinitions>

<RowDefinition />

<RowDefinition />

</Grid.RowDefinitions>

<Grid.ColumnDefinitions>

<ColumnDefinition Width=’Auto’ SharedSizeGroup=’a’ />

<ColumnDefinition Width=’Auto’ />

</Grid.ColumnDefinitions>

<Button Grid.Row=’0’ Grid.Column=’0’>One</Button>

<Button Grid.Row=’0’ Grid.Column=’1’>Two</Button>

<Button Grid.Row=’1’ Grid.Column=’0’>Three (which is longer)

</Button>

<Button Grid.Row=’1’ Grid.Column=’1’>Four</Button>

</Grid>

<Border …>

<Grid>

<Grid.RowDefinitions>

<RowDefinition />

<RowDefinition />

</Grid.RowDefinitions>

<Grid.ColumnDefinitions>

<ColumnDefinition Width=’Auto’ SharedSizeGroup=’a’ />

<ColumnDefinition Width=’Auto’ />

</Grid.ColumnDefinitions>

<Button Grid.Row=’0’ Grid.Column=’0’>a</Button>

<Button Grid.Row=’0’ Grid.Column=’1’>b</Button>

<Button Grid.Row=’1’ Grid.Column=’0’>c</Button>

<Button Grid.Row=’1’ Grid.Column=’1’>d</Button>

</Grid>

</Border>

</StackPanel>

Запустив эту программу, мы увидим (рис. 4.25), что первый столбец во второй сетке (с кнопками  a – d и жирной черной рамкой)  имеет такую же ширину, как в первой. Эта идея применяется, например,  в элементе  ListView,  чтобы заголовок столбца имел такой же размер, как у строк в разделе данных.

Источник: К. Андерсон  Основы  Windows Presentation Foundation. Пер. с англ. А. Слинкина — М.: ДМК Пресс, 2008 — 432 с.: ил.

По теме:

  • Комментарии