Tabitem数据上下文始终引用WPF中最后创建的Tabitem的数据上下文 [英] Tabitem datacontext always refers the lastly created tabitem's datacontext in wpf

查看:53
本文介绍了Tabitem数据上下文始终引用WPF中最后创建的Tabitem的数据上下文的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆