#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 обновится автоматически. Пусть машина работает за вас!
Комментариев нет:
Отправить комментарий