Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF“;收藏包括「;类型数据绑定_C#_Wpf_Entity Framework_Data Binding - Fatal编程技术网

C# WPF“;收藏包括「;类型数据绑定

C# WPF“;收藏包括「;类型数据绑定,c#,wpf,entity-framework,data-binding,C#,Wpf,Entity Framework,Data Binding,考虑以下(简化)模型: 我是否将AllRoles复制到并相应地设置IsChecked。绑定助手集合,并在保存模型之前,“手动”更新原始集合。但是,此解决方案引入了模型一致性问题。是否有一种方法可以绑定CurrentPerson.Roles,以便直接修改它(在db上下文中) 编辑:下面的评论中有一些很好的建议您可能需要使用值转换器,以便处理特殊绑定logic@GordonAllocman我不知道你到底是什么意思?我可以多绑定两个集合,但输出应该是单个集合-项目如何转换回?@GordonAlloc

考虑以下(简化)模型:

我是否将
AllRoles
复制到并相应地设置
IsChecked
。绑定助手集合,并在保存模型之前,“手动”更新原始集合。但是,此解决方案引入了模型一致性问题。是否有一种方法可以绑定CurrentPerson.Roles,以便直接修改它(在db上下文中)



编辑:下面的评论中有一些很好的建议

您可能需要使用值转换器,以便处理特殊绑定logic@GordonAllocman我不知道你到底是什么意思?我可以多绑定两个集合,但输出应该是单个集合-项目如何转换回?@GordonAllocman我看到的问题是,在转换中,我可以拥有两个集合,将其转换为ItemAndChecked类型的集合。但是在
object[]中返回(对象值,< /代码>将只返回要转换的ItEnand Stand集合,我不会有原始引用被更新,对吗?我会考虑编写一个引用角色的类,以及对目标人的角色集合的引用。调用它<代码> RoleVM < /代码>。“ObservableCollection
Person`将拥有
ObservableCollection
。当您设置
RoleVM.IsSelected
时,设置者确保
RoleVM
的角色是或不是(视情况而定),包括在该人的角色中。这并不像Gordon的想法那样纯粹是MVVM,但可能不会那么麻烦。有一些好的建议,遗憾的是现在(但今天晚些时候)无法验证。如果可能的话,请将这些建议作为答案(而不是评论)发布。
class Person {
  List<Role> Roles { get; set; } //m:n navigation property
}

class PersonVM {
  Person CurrentPerson { get; set; }
  List<Role> AllRoles { get { return dbctx.Roles; } }
}
class ItemAndChecked<T>
{
  public T Item { get; set; }
  public bool IsChecked { get; set; }
}