对于每个人,我发现了WPF,TabControl和DataGrid的不同问题 . 特别是如果TabControl ItemsSource被绑定 .
我发现的问题:
-
切换Tabs来回后,DataGrid中的选择不可见
-
DataGrid在选项卡切换上丢失排序(卸载时清除CollectionView.GetDefaultCollection的SortDescriptions)
-
如果DataGrid单元格具有焦点(处于编辑模式)并且您单击另一个选项卡,则可能发生以下两种情况:1 . )绑定对象将不会更新; 2.)如果对象无效,则会在编辑期间收到错误DeferRefresh,或类似的内容
-
如果使用绑定的TabControls和DataTemplates,如果切换到另一个选项卡,DataGridComboBox和可能的其他控件会清除它们的值 . 这清除了任何选择 .
所以现在我的问题是:在这种情况下,是否有任何ThirdParty控件表现更好?
你也可以在这里投票http://connect.microsoft.com/VisualStudio/feedback/details/807849/databound-tabcontrol-bugs
我得到了微软的回答,它无法解决,因为没有足够的人有这个问题 . 我知道一些修复,但它们有些真的不干净(例如使用反射) . 也许你有一些想法?
2 回答
嗯,有趣的帖子虽然我打赌所有没有错误 . 我认为微软甚至没有看过这些东西 . 他们可能永远不会 . 如果您可以发布或上传所有这些问题的代码,我可能会认为它们都是错误的错误,我将非常感激 .
顺便说一下,TabControl ItemsSource是什么意思?
以下是我对您在问题中提供的信息的反馈 . 1)你选择的东西,你在任何地方点击,无论是tabitem还是其他窗口,你都会失去焦点,选择将变为无效意味着略带灰色的颜色 . 2)卸载意味着从VisualTree中删除控件,因此必须清除CollectionView以释放内存 . 这很好,因为你不想要内存泄漏 . 3)如果单元格的编辑模板包含控件,这些控件将在焦点丢失时更新绑定的源,那么肯定会发生 . 如果您恰好使用TabItems的模板,那么模板将主要被重用(具有相同实例的方式),因此您可能最终将座位远离DataGrid'屁股,这更不是一个错误而是您不想要的东西也发生在你身上 . 因此,在编辑单元格时,DataGrid可能会大喊“哟,不要傻瓜” . 4)与#3相同,它取决于你在做什么以及如何定义模板 . 主要考虑模板是否在具有密钥的资源中,然后模板将被重用 .
请发布我们的代码,让我们一起来看看 . 我打赌你可能会做一些非常“不太可能”的事情 . :)
如果这些事情恰好是“四驱车”(其他人审查相同的行为),我打赌他们有解决方法 . :)
我个人觉得所有这些事情都发生了,因为你正在使用数据绑定TabControl . 无论这意味着什么 . 我很高兴看到什么是数据绑定TabControls以及它们如何绑定?你如何定义这些模板 .
我有同样的问题 .
修复DataGridComboBox问题可能是将ComboBox的ItemsSource指定为TabControl的DataContext属性而不是DataGrid,因为当您选择另一个选项卡时,DataGrid将从可视树中删除: