Страницы

Поиск по вопросам

вторник, 31 декабря 2019 г.

Окно переменной длины и размещение контролов

#c_sharp #wpf #net #winforms


Допустим, нужно создать окно с тестовыми вопросами. Неизвестно, какой длины будет
окно. Как добавлять в такое окно элементы? Вроде с формой не поработаешь. В Qt есть
менеджеры компоновки. Там просто добавляешь элементы. В С# есть что-нибудь подобное?
Как в таком случае организовать добавление элементов окна?

UPD: Черт, простите, моя вина. Я пишу на WinForms и там уже относительно большой
проект написан. Эти вопросы являются частью проекта, которую я оставил для реализации
на потом. Так что решения WPF не требуются, хотя все равно спасибо за них, в будущем
почитаю про них.
    


Ответы

Ответ 1



Если вы используете WinForms, изучайте: Свойства: Control.Anchor Control.Dock Control.Margin Control.Padding Классы: TableLayoutPanel FlowLayoutPanel SplitterPanel См.: Windows Forms Layout Если вы используете WPF, изучайте: Свойства: FrameworkElement.HorizontalAlignment FrameworkElement.VerticalAlignment FrameworkElement.Margin FrameworkElement.Padding Классы: Grid DockPanel StackPanel WrapPanel Canvas См.: Layout Alignment, Margins, and Padding Overview В целом, WPF даёт больше свободы для дизайна, поэтому, если вам требуется сложная логика размещения контролов, рекомендуется использовать его. Ну и WPF — более современная и передовая библиотека, лучше поддерживает современные возможности и всё такое.

Ответ 2



На мой вкус, правильное решение (на WPF) такое: Список вопросов лежит в вашей VM, в ObservableCollection. На уровне View используется ItemsControl, у которого ItemsSource есть Binding на список вопросов. Для управления видом отдельного вопроса используйте ItemTemplate. Добавление элемента сводится теперь к модификации коллекции вопросов. View обновится автоматически. Пусть машина работает за вас!

Комментариев нет:

Отправить комментарий