Что намеченный путь состоит в том, чтобы сделать маркировкой и текстовым полем рядом в WPF?

Я буду часто использовать это:

<StackPanel>
  <StackPanel Orientation="Horizontal">
    <Label>Username:</Label>
    <TextBox />
  </StackPanel>
  <StackPanel Orientation="Horizontal">
    <Label>Password:</Label>
    <PasswordBox />
  </StackPanel>
</StackPanel>

Но это - такой общий сценарий, я чувствую, что существует путь с меньшим количеством разметки.

Кроме того, есть ли влияние производительности использования такого количества панелей стека?

Спасибо!

12
задан akjoshi 15 March 2012 в 06:43
поделиться

3 ответа

Есть два основных способа сделать это: StackPanels и Grid Definitions , а Grid не обеспечивает меньшую разметку, чем StackPanel ]. Лично мне гораздо больше нравится использовать Grid Definitions . К ним нужно время, чтобы привыкнуть, и время от времени я все еще использую StackPanel , но в целом они кажутся намного чище, когда вы к ним привыкаете. Вот отличный учебник о том, как их использовать.

Также может помочь ссылка WPF Grid Vs. StackPanel .

3
ответ дан 2 December 2019 в 21:02
поделиться

Не знаю почему, но мне очень понравились DockPanel , и я использую их для сценария, который вы описали.

<DockPanel>
    <Label Content="Username:"/>
    <TextBox Text="Some Text"/>
</DockPanel>

Полное обозначение (и эквивалентная версия, поскольку позиция док-станции по умолчанию оставлена):

<DockPanel>
    <Label DockPanel.Dock="Left" Content="Username:"/>
    <TextBox DockPanel.Dock="Left" Text="Some Text"/>
</DockPanel>

Кроме того, у него есть свойство LastChildFill , которое по умолчанию истинно , что делает последнее добавлен дочерний элемент, заполняющий оставшееся место (мне нравится эта функция). Итак, в приведенных выше примерах TextBox заполнит оставшееся доступное горизонтальное пространство. (Вы можете легко выключить его, переключив его на false)

Надеюсь, что это поможет !!

DockPanel документация

8
ответ дан 2 December 2019 в 21:02
поделиться

Я предпочитаю Grid, если в форме должно присутствовать большое количество меток и текстовых полей, например, для ввода данных или элементов управления типа сетки свойств. Grid предоставляет гораздо больше возможностей для управления шириной/высотой столбцов строк, а изменение значения ширины/высоты в одном месте повлияет на все строки.

Еще одним преимуществом использования Grid является выравнивание, все метки и текстовые поля (или другие элементы управления) будут выровнены правильно. В случае Stackpanel или Dockpanel вам придется явно задать ширину для каждой метки, чтобы выровнять их правильно.

Вы также можете использовать GridSplitter в Grid, который может быть очень полезен в элементах управления типа PropertGrid.

В случае, если требуется только один или два таких ряда и выравнивание не является проблемой, вы можете использовать Dockpanel или StackPanel.

3
ответ дан 2 December 2019 в 21:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: