У меня есть довольно сложный объект модель, имеющая вложенные объекты пользовательских коллекций/модель, как показано ниже:WPF ListView с помощью пользовательского множественного CheckBox внутри
public sealed class LibraryInfo : NamedModel
{
public ClassInfos _classes;
public ClassInfos Classes
{
get { return _classes; }
set { SetProperty(ref _classes, value); }
}
}
public class ClassInfos : List<ClassInfo> { }
public sealed class ClassInfo : NamedModel
{
public PropertyInfos _properties;
public PropertyInfos Properties
{
get { return _properties; }
set { SetProperty(ref _properties, value); }
}
}
public class PropertyInfos : List<PropertyInfo> { }
public sealed class PropertyInfo : NamedModel
{
}
Я хочу, чтобы связать LibraryInfo
классов на одном ListView
для выбора классов.
<ListView SelectedItem="{Binding SelectedClass}" ItemsSource="{Binding LibraryInfo.Classes}">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
</GridView>
</ListView.View>
</ListView>
И на основе ClassInfo
выбора Я хочу, чтобы показать свойства выбранного класса на другой ListView
для выбора свойств.
<ListView ItemsSource="{Binding SelectedClass.Properties}">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
</GridView>
</ListView.View>
</ListView>
Проблема заключается в том, что, как я могу отслеживать проверил (CheckBox IsChecked) предметы, потому что моя оригинальная модель не содержит каких-либо такое свойство, как IsActive, чтобы сохранить поле, связанные с UI отделено от моей модели.
Я ищу элегантное и простое решение этой проблемы.
Как вы говорите, это класс модели. Чтобы отслеживать изменения пользовательского интерфейса, вам нужен класс ViewModel. Вместо того, чтобы напрямую привязывать вашу модель, оберните ее моделью и привяжите к этому классу. –
@ qqww2, я знаю, что это должно быть завернуто в ViewModel, но таким образом ViewModel становится более сложным. Вместо этого я ищу простое решение. Не могли бы вы дать направление, используя код. –