2011-01-16 2 views
0

Я только что переключился на WPF только из обычного C# .NET для более продвинутых элементов управления пользовательским интерфейсом. Мне удалось очень запутаться в том, что должно быть предельно простым, и я надеюсь, что кто-то может помочь.Вопросы управления WPF

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

Мое понимание было в том, что я мог бы просто взять DockPanel, установить ChildFill в true, докнуть каждый, где он должен идти, и оставить последний, чтобы заполнить пробел. Кажется, что только списки не работают с DockPanel, и DockPanel, похоже, не расширяется, когда я изменяю размер окна.

Так в основном мои вопросы ...

1) Почему DockPanel не разворачивать/сжиматься при изменении размера окна?

2) Кнопки, похоже, отлично работают на панели док-станции (как и все примеры, которые я нашел), но с использованием списков ящиков, похоже, не работают должным образом. Почему это?

3) Если я поместил вместо этого поля списка внутри Expanders, если я скажу два из них на левой стороне, и я сжимаю верхний расширитель, будет ли нижний расширитель расти вверх, чтобы заполнить пробел?

Я не могу позволить себе что-либо вроде ActiPro, и я не смог заставить элементы управления AvalonDock появляться на панели инструментов MSVC 2010, поэтому я довольно сильно застрял с использованием элементов управления по умолчанию.

ответ

1

1). Я только что протестировал DockPanel, и он расширяется/сокращается при изменении размера окна. Удалили ли вы Grid, помещенную в Window по умолчанию в Visual Studio? Если вы имеете в виду, что он не изменяет размер пропорционально размеру Windows, я думаю, вам нужно будет использовать Grid.

2). Опять же, ящики списков отлично работают для меня. Можете ли вы дать более подробную информацию о том, почему они не работают должным образом?

3). Это зависит от того, что вы подразумеваете под «Grow upwards». Если верхний расширитель закрыт, отобразится только заголовок, а нижний расширитель будет перемещаться вверх, чтобы принять пространство, занимаемое первым содержимым расширителей (это поведение по умолчанию).

У вас есть XAML, который вы можете опубликовать, так как это поможет определить ваши проблемы.

+0

После ваших комментариев я вернулся и попробовал снова и получил работу по большей части. Вы были правы, когда я удалял сетку, что и заставило DockPanel работать неправильно. Единственная проблема, с которой я столкнулся сейчас, - это выяснить, как сделать два левого меню стек вертикально, а не горизонтально. Прямо сейчас оба экспандера состыкованы слева, и они показывают бок о бок, а не один в верхнем левом углу, а один внизу слева. Как я могу это решить? Вот мой XAML http://pastebin.com/bh3huDeD –

+0

Также спасибо за ответы, которые помогли много :) –

+0

Чтобы получить расширители в стек, вам нужно состыковать StackPanel влево, а затем поместить расширители внутри StackPanel. Кроме того, если вы хотите разместить только один блок в каждом расширителе, тогда сетки не нужны –

Смежные вопросы