在我的Tabcontrol中,第一个tabitem内容与其余内容不同,它是通过XAML添加的,效果很好。 但是,所有其余部分都是基于自定义集合的计数从viewmodel中添加的(在控件加载时),这些选项卡共享相同的设计,但共享不同的数据,问题在于所有选项卡数据都相同,即使用集合中的最后一个数据。 (除了选项卡标题文本,其他都可以)。 使用相同内容的Tabitems会像这样建立:
contenttemplate使用一个DataTemplate,它具有文本块/文本框的绑定。
<ContentControl Content="{Binding}" x:Key="ResourceTabItemContent" ContentTemplate="{StaticResource ResourceBookingDataTemplate}"/>
然后将所有这些用于视图模型的控制负载中,如下所示:
foreach (var item in MyCollection) { DXTabItem dxti = new DXTabItem(); dxti.Content = (ContentControl)tabmain.FindResource("ResourceTabItemContent"); dxti.DataContext = item; dxti.Header = $"{item.Order} - {item.Name}"; tabmain.InsertTabItem(dxti, tabmain.Items.Count); }
那么,如何在每个选项卡上查看正确的数据是不一样的,谢谢您的想法!
答案 0 :(得分:0)
为x:Shared=false
设置ContentControl
:
<ContentControl Content="{Binding}" x:Key="ResourceTabItemContent" x:Shared="false" ContentTemplate="{StaticResource ResourceBookingDataTemplate}"/>
从MSDN:
在WPF中,资源的默认x:Shared条件为true。这个 条件意味着任何给定的资源请求始终返回 同一实例。