Я настраиваю элемент управления WPF с помощью ListView, который отображает список элементов из наблюдаемой коллекции объектов класса (здесь - AllSettingsCollection<MySettings>
), присутствующей в моей модели. Где MySettings - это класс, который содержит некоторые аппаратные настройки.
Я могу установить ItemSource представления списка как
ItemsSource="{Binding Model.AllSettingsCollection}"
и отображать имя в каждой строке, используя DataTemplate (кодниже), но я не могу установить выбранное свойство каждой строки на основе свойства IsSelected.
Предположим, что класс (MySettings) такой же, как ниже
public class MySettings
{
public string Name{get; private set;}
public string IsSelected{get; private set;}
}
и объекты этого классанаходятся в коллекции AllSettingsCollection
, которая является ObservableCollection<MySettings>
Теперь, если я настрою свой ListView, как показано ниже
<ListView
Grid.Row="0"
HorizontalContentAlignment="Stretch"
ItemsSource="{Binding Model.AllSettingsCollection}"
SelectionMode="Multiple"
Style="{StaticResource ListViewStyle}">
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridViewColumn
DisplayMemberBinding="{Binding Name}"
Header="Settings:" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock HorizontalAlignment="Stretch" Text="{Binding}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridView.ColumnHeaderContainerStyle>
<Style BasedOn="{StaticResource NonResizableGridViewColumnHeaderStyle}" TargetType="{x:Type GridViewColumnHeader}">
</Style>
</GridView.ColumnHeaderContainerStyle>
</GridView>
</ListView.View>
<ListView.ItemContainerStyle>
<Style BasedOn="{StaticResource ListViewItemStyle}" TargetType="{x:Type ListViewItem}">
</Style>
</ListView.ItemContainerStyle>
</ListView>
, так как мой ListView.ItemsSource является Model.AllSettingsCollection, я могугенерировать каждую строку с именем. но я не могу найти, где я могу установить свойство IsSelected каждой строки.
Где я могу установить свойство isSelected каждой строки, если ListView, поэтому в идеале я мог бы иметь такой оператор, как
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
, который берет каждую строку и помечает ее как выбранную или не основаннуюо свойстве IsSelected объекта в коллекции.
Примечание. Я также хотел бы, чтобы в каждой строке isSelected было событие change, которое реагирует на изменение пользователем выбранного набора элементов, но этото, на что я посмотрю позже.