对于每个人,我发现WPF、TabControl和DataGrid都有不同的问题。特别是当TabControl ItemsSource被绑定时。
我发现的问题:
所以现在我的问题是:是否有任何ThirdParty控件在这种情况下表现得更好?
你也可以在这里投票http://connect.microsoft.com/VisualStudio/feedback/details/807849/databound-tabcontrol-bugs
我从微软那里得到了答案,因为没有足够的人来解决这个问题。我知道一些解决办法,但它们确实有些不干净(f.e。使用反射)。也许你有什么想法?
发布于 2013-11-09 20:56:16
嗯,有趣的帖子,虽然我打赌没有所有的错误。我认为微软甚至没有看过这些东西。他们可能永远不会这么做。如果你能发布或上传所有这些问题的代码,我会非常感激,你可能会认为它们都是错误的错误。
顺便问一下,TabControl ItemsSource是绑定的是什么意思?
这是我从你在问题中给我们的信息中得到的反馈。1)你选择了什么东西,你点击任何地方,无论是选项卡还是其他窗口,你都会失去焦点,选择会把不活跃的方式变成略带灰色的颜色。2)卸载意味着从VisualTree中删除一个控件,因此必须清除CollectionView以释放内存。这是好的,因为你不希望内存泄漏。3)如果单元格的编辑模板包含控件,这些控件将在焦点丢失时更新绑定的源,则肯定会发生这种情况。如果您碰巧为TabItems使用了一个模板,那么该模板将大部分被重用(用相同的实例表示),因此您最终可能会从DataGrid的屁股上拿走座位,这也不是一个bug,而是一些您也不希望发生的事情。因此,DataGrid可能会大喊“哟,在我编辑一个单元格的时候,不要胡闹”。4)与#3一样,它取决于您在做什么以及如何定义模板。大多数情况下,如果模板在具有密钥的资源中,则模板将被重用。
只需张贴我们的代码,请让我们看看。我敢打赌你可能在做一些非常“不太可能”的事情。:)
如果这些事情真的是“小车”(其他人也会回顾同样的行为),我敢打赌,它们是有解决办法的。:)
就我个人而言,我有一种感觉,所有这些事情的发生都是因为您使用的是数据绑定TabControl。不管那可能意味着什么。我很高兴看到什么是数据绑定TabControls以及它们是如何绑定的?如何定义这些模板。
发布于 2014-03-12 10:17:26
我也有同样的问题。
修正到DataGridComboBox的问题可能是在选择另一个选项卡时将ComboBox的ItemsSource指定为TabControl的DataContext属性,而不是DataGrid属性,因为DataGrid将从可视树中删除:
<TabControl x:Name="tabControl" Behaviours:TabContent.IsCached="True">
<TabItem Header="Tab1" Content="{Binding}" ContentTemplate="{StaticResource Tab1}"/>
<TabItem Header="Tab2" Content="{Binding}" ContentTemplate="{StaticResource Tab2}"/>
</TabControl>
<DataTemplate x:Key="Tab1">
<DataGrid ItemsSource="{Binding Entities}" x:Name="dataGrid">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="Name" Width="100"/>
<DataGridTemplateColumn Header="Position" Width="150">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Position}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox SelectedItem="{Binding Position, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding Path=DataContext.Positions, ElementName=tabControl}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>https://stackoverflow.com/questions/19876890
复制相似问题