gpt4 book ai didi

c# - WPF TabControl - 当DataContext发生变化时,我可以阻止之前DataContext的 'de-selection'吗?

转载 作者:行者123 更新时间:2023-12-03 10:45:13 25 4
gpt4 key购买 nike

我有一个 TabControl,它包含一个复合集合。复合集合由 1 个“静态”TabItem 和一组数据绑定(bind)项组成,位于 ViewModel 中:

<TabControl x:Name="myCompositeTabs"
ItemContainerStyle="{StaticResource CloseableTabItem}"
Style="{StaticResource ScrollableTabControl}"
ItemTemplate="{StaticResource CloseableTabItemHeaderDataTemplate}"
SelectedIndex="{Binding SelectedIndex}">
<TabControl.Resources>
<CollectionViewSource x:Key="boundTabCollection" Source="{Binding MyItems}" />
</TabControl.Resources>
<TabControl.ItemsSource>
<CompositeCollection>
<TabItem x:Name="summaryTab" Header="Summary">
<views:SummaryView />
</TabItem>
<CollectionContainer Collection="{Binding Source={StaticResource boundTabCollection}}" />
</CompositeCollection>
</TabControl.ItemsSource>
</TabControl>

TabControl 的 DataContext 经常更改,因为 TabControl 本身代表了完全独立的 ViewModel 集合的当前选定项 - 如果您愿意的话,是一个“集合的集合”。

我遇到的问题是;在 DataContext 切换期间,TabControl 的 native 行为似乎将 SelectedIndex '重置'为 -1。因此,每次用户选择不同的 ViewModel 时,TabControl 都会“重置”先前选择的 ViewModel 的选定索引。我不希望它那样做;我希望它在上下文切换时单独保留 SelectedIndex - 每个 ViewModel 应该能够跟踪自己的 SelectedIndex 值。

...我将如何防止这种“重置”?我尝试在“DataContextChanged”事件中捕捉它,但这似乎为时已晚;在“旧” View 模型上重置所选索引后引发该事件。

最佳答案

在尝试了多种自定义行为、事件处理程序和数据绑定(bind)组合之后,我得出的结论是 CompositeCollection 在混合静态项和数据绑定(bind)项时不能很好地与 TabControl 配合使用。

我将“摘要选项卡”内容推送到虚拟机中,现在一切似乎都正常了。

关于c# - WPF TabControl - 当DataContext发生变化时,我可以阻止之前DataContext的 'de-selection'吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28835645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com