Tabitem数据上下文始终引用WPF中最后创建的Tabitem的数据上下文 [英] Tabitem datacontext always refers the lastly created tabitem's datacontext in wpf
问题描述
我有一个tabControl.我将在其中动态添加标签.
I have a tabControl. I will be adding tabitems to it dynamically.
我的问题是,当我创建一个包含内容和数据上下文的新选项卡时,所有旧选项卡也都引用了最后创建的选项卡的数据上下文.
My problem is when I create a new tab with content and datacontext, all the old tabs also referring the lastly created tab's datacontext.
以下是步骤.
1.我创建一个标签.工作正常.
1. I create a tab. Its working fine.
2.我创建了另一个标签.工作正常.
2. I have created another tab. Working fine.
3.回到第一个选项卡,并且如果我对内容进行任何更改,那么我会发现它引用了第二个选项卡的dataContext.这是我的问题.
3. When go back to first tab and if I do any changes in content, then I observed that its referring the 2nd tab's dataContext. This is the problem I have.
我将tabControl的dataContext设置为 List< TabItem>如下.我将创建一个tabItem.并将其添加到此列表中.
I am setting the dataContext of tabControl as List<TabItem> as below. And I will create a tabItem. And adding it to this list.
私有列表< TabItem> m_ViewTabs = new List< TabItem>();
private List<TabItem> m_ViewTabs = new List<TabItem>();
this.tabControl .DataContext = m_ViewTabs;//List
this.tabControl .DataContext = m_ViewTabs; //List<TabItem>;
a_TabItem =新的TabItem();
a_TabItem = new TabItem();
m_ViewTabs.Add(l_Tab);
m_ViewTabs.Add(l_Tab);
View l_View = new View();
ViewModel l_ViewModel = new ViewModel();
l_View.DataContext = l_ViewModel;
a_TabItem.Content = l_View;
a_TabItem.DataContext = l_ViewModel;
this.tabControl .Items.Refresh();
View l_View = new View();
ViewModel l_ViewModel = new ViewModel();
l_View.DataContext = l_ViewModel;
a_TabItem.Content = l_View;
a_TabItem.DataContext = l_ViewModel;
this.tabControl .Items.Refresh();
有人可以帮助我解决什么问题,如何解决.
Could anybody help me what is the problem and how can it be solved.
此致
莫汉.
推荐答案
我不知道为什么要将TabControl的DataContext设置为List< TabItem>.那不是必需的.
I don't know why you are setting the DataContext of the TabControl to List<TabItem> that's not neccesary.
应该是这样
var tabItem = new TabItem();
var l_View = new View();
var l_ViewModel = new ViewModel();
l_View.DataContext = l_ViewModel;
tabItem.Content = l_View;
this.tabControl.Items.Add(tabItem);
this.tabControl.Items.Refresh();
这篇关于Tabitem数据上下文始终引用WPF中最后创建的Tabitem的数据上下文的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!