c# – 如何将ListView绑定到存储在WPF中的单个ViewModel中的多个
发布时间:2020-12-15 08:16:56 所属栏目:百科 来源:网络整理
导读:我有2个集合要绑定到ListView中的单独GridViewColumn: public class EffectView : INotifyPropertyChanged{ ObservableCollectionEffect effects; public ObservableCollectionEffect Effects { get { return this.effects; } set { this.effects = value;
我有2个集合要绑定到ListView中的单独GridViewColumn:
public class EffectView : INotifyPropertyChanged { ObservableCollection<Effect> effects; public ObservableCollection<Effect> Effects { get { return this.effects; } set { this.effects = value; this.RaisePropertyChanged ( "Effects" ); } } ObservableCollection<EffectDescription> descriptions; public ObservableCollection<EffectDescription> Descriptions { get { return this.descriptions; } set { this.descriptions = value; this.RaisePropertyChanged ( "Descriptions" ); } } } 我可以做这个: <ListView ItemsSource="{Binding EffectView.Effects}"> <ListView.View> <GridView> <GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Name}" Header="Name" /> <GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Opacity}" Header="Opacity" /> <GridViewColumn Width="Auto" DisplayMemberBinding="{Binding ?}" Header="Description" /> </GridView> </ListView.View> </ListView> 但是后来所有内容都限定在EffectView.Effects中,但我希望默认范围是EffectView,这样我就可以轻松地将多个集合分配给ListView. 就像是: <ListView ItemsSource="{Binding EffectView}"> <ListView.View> <GridView> <GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Effects Path=Name}" Header="Name" /> <GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Effects Path=Opacity}" Header="Opacity" /> <GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Descriptions Path=Usage}" Header="Description" /> </GridView> </ListView.View> </ListView> 有没有办法实现这个目标? 解决方法
ListView的ItemsSource是其项目将出现在列表中的集合.那么想一想你要求ListView做什么:
>作为源集合,使用不是集合但包含它们的东西 注意第二点:每行必须显示Events集合中的一些项目和Descriptions集合中的一些项目. 从每个项目中选择哪个项目?这两个系列中的项目之间有什么关系? 看来你真正需要的是一个包含Event和Description的对象集合.然后,您可以绑定到该集合以显示两个实体的元素.粗略地,这样的事情: public class EffectView : INotifyPropertyChanged { ObservableCollection<EffectsAndDescriptions> effects; public ObservableCollection<EffectAndDescriptions> Effects { get { return this.effects; } set { this.effects = value; this.RaisePropertyChanged ( "EffectsAndDescriptions" ); } } } internal class EffectsAndDescriptions { public Effect Effect { get; set; } public Description Description { get; set; } } 现在您可以绑定到EffectsAndDescriptions集合(请注意,这假设ListView的父级的DataContext是EffectView) <ListView ItemsSource="{Binding EffectsAndDescriptions}"> <ListView.View> <GridView> <GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Effect.Name}" Header="Name" /> <GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Effect.Opacity}" Header="Opacity" /> <GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Description.Usage}" Header="Description" /> </GridView> </ListView.View> </ListView> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Vue项目分环境打包的实现步骤
- xml_document_slave_ti 读取UTF-8格式XML字符串无法解析
- EtherChannel Cisco 端口聚合详解
- ruby-on-rails – 在rails中设置一个带有独角兽,nginx和cap
- objective-c – 在编辑模式下将UISearchBar与UITableView一
- Oracle中有关Group by 中avg();sum();min();max();count();
- react-native – 当我使用AsyncStorage.getItem()来检索指定
- reactjs – 如何在React Router中更新路由而无需在单页面应
- ruby-on-rails – 在Rails中,如何在执行ActiveRecord查询时
- BTrace对依赖的asm包的包名进行了重命名