Сложный интерфейс внутри ListBoxItem
В WPF я могу добавить любой пользовательский интерфейс вListBoxItem
с предоставлениемListBox
сItemTemplate
:
<ListBox ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderThickness="1" BorderBrush="Gray" CornerRadius="8" Padding="4,0,4,0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<CheckBox Grid.Column="1" Content="Is Active Customer" IsChecked="{Binding IsActive}"/>
<Label Content="Id:" Grid.Row="1" HorizontalAlignment="Right"/>
<Label Content="Name:" Grid.Row="2" HorizontalAlignment="Right"/>
<TextBox Text="{Binding Id}" Grid.Row="1" Grid.Column="1"/>
<TextBox Text="{Binding Name}" Grid.Row="2" Grid.Column="1"/>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Результаты в:
Есть ли способ добиться того же в Windows Forms?
Редактировать:
1 - Есть ли способ добиться того же в Windows Forms, все при сохраненииseparation of concerns
междуView
иApplication Logic
таким образом, что если бы я позже хотел полностью переопределитьView
Мне не придется рефакторинг всего приложения?
2 - Winforms поддерживает привязку данных таким образом, что каждый из моихListBoxItems
может быть связано с комплексомEntity
со временем, включая промежуточное преобразование типов из данных модели в данные пользовательского интерфейса и обратно, таким образом, что мне не нужно писать тонны шаблонного кода для заполнения представления, а затем передавать значения пользовательского интерфейса обратно в модель для сохранения ?
3 - Что если бы я хотел представитьAnimations
таким образом, что в настоящее времяSelectedItem
оживленно развернется в какой-нибудь режим «Детали строки», где вы сможете увидеть много дополнительной информации?
4 - поддерживает ли winformsUI Virtualization
таким образом, что, если у меня есть, скажем, 1 миллион элементов, загрузка пользовательского интерфейса не занимает много времени, а отображает только то, что видно на экране?
5 - Скажем, я хотел ввести сложную графику в уравнение. Является ли winforms рендерингом с аппаратным ускорением?
6 - Как мне все это сделатьResolution Independent
таким образом, что ListBox и все его содержимое растягивается до доступного размера окна, чтобы использовать большие экраны при сохранении совместимости с меньшими экранами?
7 - Было предложено использоватьListView
контроль вместо обычногоListBox
делает лиListView
предоставить возможность добавить любой интерфейс в него? я могу добавить видео например для каждого элемента? или сложный шаблон Master / Detail с кнопками Сохранить и редактировать?
8 - Предоставляет ли winforms последовательную и адекватнуюМодель документа что позволяет создавать высококачественные документы WYSIWYG и другие типы богатого контента?