我有一个相当复杂的对象模型,它具有嵌套的自定义集合对象/模型,如下所示:
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相关字段与Model解耦。
我正在寻找一个优雅而简单的解决这个问题的方法。
发布于 2016-04-04 07:15:35
使用混合行为。
对选定的项目在Collection中使用ViewModel。
编写一个名为ICommand的UpdateSelectedItemsCommand,并传递用于添加/删除项的1/0参数。
<CheckBox ...>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<i:InvokeCommandAction Command="{Binding UpdateSelectedItemsCommand}"
CommandParameter="1"/>
</i:EventTrigger>
<i:EventTrigger EventName="Unchecked">
<i:InvokeCommandAction Command="{Binding UpdateSelectedItemsCommand}"
CommandParameter="0"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</CheckBox>https://stackoverflow.com/questions/36395464
复制相似问题