在wpf中,我设置了一个标签控件,它绑定到一个对象集合,每个对象都有一个数据模板,数据网格显示数据.如果我选择一个特定的细胞,并把它进入编辑模式,转到另一个选项卡离开电网,这将导致异常下面要在返回数据网格抛出:
在AddNew或EditItem事务期间不允许"DeferRefresh".
看来该单元格从未离开编辑模式.是否有一种简单的方法可以将单元格从编辑模式中取出,或者是否还有其他功能?
更新:它看起来像如果我不绑定选项卡控件到数据源,而是明确定义每个选项卡,然后在数据源中的每个项目绑定到内容控制这个问题消失.这不是一个很好的解决方案,所以我仍然想知道如何将集合直接绑定到选项卡控件.
更新:所以我实际上为自己的解决方案所做的是使用ListView和内容控件来代替选项卡控件.我使用样式使列表视图看起来像.视图模型公开一组子视图模型,并允许用户通过列表视图选择一个.然后,内容控件呈现所选择的视图模型,并且每个视图模型具有包含数据网格的关联数据模板.通过此设置在视图模型之间切换,而在网格上的编辑模式下,将正确结束编辑模式并保存数据.
这是设置它的xaml:
<ListView ItemTemplate="{StaticResource MakeItemsLookLikeTabs}"
ItemsSource="{Binding ViewModels}"
SelectedItem="{Binding Selected}"
Style="{StaticResource MakeItLookLikeATabControl}"/>
<ContentControl Content="{Binding Selected}">
Run Code Online (Sandbox Code Playgroud)
我会接受Phil的答案,因为它也应该有效,但对我来说,上面的解决方案似乎在项目之间更容易移植.
我已经看到很多关于何时使用前向声明而不是包含头文件的解释,但是很少有人解释为什么这样做很重要.我见过的一些原因包括:
来自.net背景我发现标题管理令人沮丧.我有这种感觉我需要掌握前向声明,但到目前为止我一直在报废.
为什么编译器不能为我工作并使用一种机制(包括)找出我的依赖关系?
前向声明如何加速编译,因为在某些时候引用的对象需要编译?
我可以购买降低复杂性的论据,但这样做的实际例子是什么呢?