Добавить строку в ListView с несколькими колоннами?
-
25-10-2019 - |
Вопрос
У меня проблемы с добавлением строки, которая отображает все значения члена объекта.
Вот как я настроил свой список:
<ListView Height="178" HorizontalAlignment="Left" Margin="238,31,0,0" Name="SpoolSheetListView" VerticalAlignment="Top" Width="555" HorizontalContentAlignment="Stretch" SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn Width="85" Header="Column 1" />
<GridViewColumn Width="120" Header="Column 2" />
<GridViewColumn Width="120" Header="Column 3" />
<GridViewColumn Width="120" Header="Column 4" />
<GridViewColumn Width="115" Header="Column 5" />
</GridView>
</ListView.View>
</ListView>
Скажем, MyObject имеет 5 участников: Member1 to Member5, которые все типовые строки. Как добавить одну строку в ListView для этого объекта?
Еще раз спасибо, люди!
Решение
Управление списками WPF работает лучше всего, когда вы используете их с привязкой данных; Вы должны связать ItemsSource
принадлежащий ListView
с списком объектов и свяжите каждый столбец с свойством этих объектов.
<ListView ItemsSource="{Binding Items}" Height="178" HorizontalAlignment="Left" Margin="238,31,0,0" Name="SpoolSheetListView" VerticalAlignment="Top" Width="555" HorizontalContentAlignment="Stretch" SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn Width="85" Header="Column 1" DisplayMemberBinding="{Binding Member1}" />
<GridViewColumn Width="120" Header="Column 2" DisplayMemberBinding="{Binding Member2}" />
<GridViewColumn Width="120" Header="Column 3" DisplayMemberBinding="{Binding Member3}" />
<GridViewColumn Width="120" Header="Column 4" DisplayMemberBinding="{Binding Member4}" />
<GridViewColumn Width="115" Header="Column 5" DisplayMemberBinding="{Binding Member5}" />
</GridView>
</ListView.View>
</ListView>
(Items
быть собственностью DataContext
это возвращает коллекцию объектов)
Чтобы добавить ряд в ListView
, вам просто нужно добавить элемент в Items
Коллекция (обратите внимание, что коллекция должна реализовать INotifyCollectionChanged
таким образом ListView
уведомляется; а ObservableCollection<T>
Класс отлично работает для большинства случаев)