Какой способ сделать ярлык и текстовое поле рядом в WPF? - PullRequest
12 голосов
/ 20 июля 2010

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

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

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

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

Спасибо!

Ответы [ 3 ]

8 голосов
/ 20 июля 2010

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

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

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

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

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

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

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

3 голосов
/ 20 июля 2010

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

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

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

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

3 голосов
/ 20 июля 2010

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

Ссылка, которая также может помочь: WPF Grid Vs. StackPanel .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...