Каков предназначенный способ сделать ярлык и текстовое поле бок о бок в WPF?
Я часто использую это:
<StackPanel>
<StackPanel Orientation="Horizontal">
<Label>Username:</Label>
<TextBox />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label>Password:</Label>
<PasswordBox />
</StackPanel>
</StackPanel>
Но это такой общий сценарий, я чувствую, что есть способ с меньшей разметкой.
Кроме того, есть ли влияние производительности на использование большого количества панелей стека?
Спасибо!
Ответы
Ответ 1
Есть два основных способа сделать это: StackPanels и Определения сетки, а Grid
не обеспечивает меньшую разметку, чем StackPanel
. Мне лично нравится использовать Определения сетки намного больше. Некоторое время они используют, и время от времени я все еще использую StackPanel
, но в целом они чувствуют себя намного более чистыми, когда вы им пользуетесь. Вот отличный учебник о том, как их использовать.
Ссылка, которая также может помочь, - WPF Grid Vs. StackPanel.
Ответ 2
Я не знаю почему, но я очень любил 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
, которое по умолчанию true
, добавив к нему последний добавленный остаток (мне нравится эта функция). Итак, в приведенных выше примерах TextBox
заполнит оставшееся доступное горизонтальное пространство. (Вы можете легко отключить его, переключив его на false)
Надеюсь, что это поможет!
DockPanel
документация
Ответ 3
В основном я предпочитаю Grid
, если в форме должно присутствовать большое количество меток и текстовых полей, таких как элементы ввода данных или свойства сетки. Сетка обеспечивает гораздо большую мощность для управления столбцами width
/height
строк и изменение значения width
/height
в одном месте будет влиять на все строки.
Еще одно преимущество использования Grid
- выравнивание, все метки и текстовые поля (или другие элементы управления) будут правильно выровнены. В случае Stackpanel
или Dockpanel
вам нужно будет явно установить wdth на каждую метку, чтобы правильно их выровнять.
Вы также можете использовать GridSplitter
в Grid, который может быть очень полезен для элементов управления PropertGrid.
Если требуется только одна или две такие строки, а выравнивание не вызывает беспокойства, вы можете продолжить Dockpanel
или Stackpanel
.