使用WPF将window 添加到TabControl里面的方法

首先

1.window 不能添加到其他控件中,原因是他是最高级的。。

在window usercontrol,以及page,frame 基本都遵循这个道理,可以添加的则是 除window以外的其他窗体。

2.添加到TabControl 下面的TabItem 控件添加usercontrl我遇到的问题是,控件是有window控件手动转成usercontrol 其中有个参数是错误的,无法试下自适应大小:后来手动修改即可

而window下面的操作是:

差别还是挺大的。

3.适用的方法:

csharp 复制代码
 public static bool  AddTabcontrol(List<string> TabKeys, TabControl ThisTBC, UserControl ThisWindows)
        {
            string TagInfo = ThisWindows.Tag.ToString();
            string[] ThisTagShowArr = TagInfo.Split(',');
            if (ThisTagShowArr.Length == 2)
            {
                string ThisKey = ThisTagShowArr[0];
                string NamaPath = ThisTagShowArr[1];
                if (!TabKeys.Contains(ThisKey))
                {
                    TabItem ThisItem = new TabItem();
                    ThisItem.Header= ThisKey;
                    ThisItem.Name = ThisKey;
                    /* ThisItem.Content=  ThisWindows;  */                  //Uri MainTragetUri = new Uri(NamaPath, UriKind.RelativeOrAbsolute);

                    //Frame ThisFrm = new Frame();
                    //ThisFrm.Name = "frameMaim"; 
                    //ThisFrm.NavigationUIVisibility = System.Windows.Navigation.NavigationUIVisibility.Hidden;
                    //ThisFrm.JournalOwnership = System.Windows.Navigation.JournalOwnership.UsesParentJournal;
                    //ThisFrm.Source = MainTragetUri;
                    //ThisFrm.Navigate(ThisWindows);
                    ThisItem.Content = ThisWindows;
                    ThisTBC.Items.Add(ThisItem);
                    ThisTBC.SelectedItem = ThisItem;
                    TabKeys.Add(ThisKey);
                }
                else
                {
                    int IndexNo = TabKeys.IndexOf(ThisKey);
                    foreach (TabItem OneItem in ThisTBC.Items)
                    {
                        if (OneItem.Name == ThisKey)
                        {
                            ThisTBC.SelectedIndex = IndexNo;
                        }
                    }
                }
                return true;
            }
            else
            {
                return false;
            }
           
           
        }

4.本数据是从网上抄袭下来的:

csharp 复制代码
   public List<TabItem> tabItemsList = new List<TabItem>();
        public TabControl tabDynamic = null;
tabDynamic = queryControl.GetChildObject<System.Windows.Controls.TabControl>(layOut, "tabDynamic");  //获取TabControl 控件
public void AddTabItem(string uriName)
        {
            int count = tabItemsList.Count;
            // create new tab item
            TabItem tab = new TabItem();
            tab.Header = string.Format("Tab {0}", uriName.Split('/')[1]);
            tab.Name = string.Format("tab{0}", uriName.Split('/')[1]);
            tab.HeaderTemplate = tabDynamic.FindResource("TabHeader") as DataTemplate;
            //tab.Background = new SolidColorBrush(Colors.Transparent);
            //tab.MouseDoubleClick += new MouseButtonEventHandler(tab_MouseDoubleClick);
            Uri MainTragetUri = new Uri(string.Format("/Freed.Api.Monitor;component/View/{0}.xaml", uriName), UriKind.RelativeOrAbsolute);
            Frame frame = new Frame();
            frame.Name = "frameMaim";
            frame.NavigationUIVisibility = System.Windows.Navigation.NavigationUIVisibility.Hidden;
            frame.JournalOwnership = System.Windows.Navigation.JournalOwnership.UsesParentJournal;
            frame.Source = MainTragetUri;
            tab.Content = frame;
            // insert tab item right before the last (+) tab item
            var tabOld = (from t in tabItemsList where t.Name == tab.Name select t).FirstOrDefault();
            if (tabOld == null)
            {
                if (count > 0)
                {
                    tabItemsList.Insert(count - 1, tab);
                }
                else
                {
                    tabItemsList.Add(tab);
                }
                tabDynamic.SelectedItem = tab;
            }
            else
            {
                tabDynamic.SelectedItem = tabOld;
            }
        }
相关推荐
weixin1997010801621 小时前
《大促护航:电商API限流与降级,双11峰值500万调用的架构复盘》(附Python源码)
python·架构·wpf
hh9502 天前
gent Plan x DeepSeek Harness:多 Agent 协作场景下的中央编排实践
人工智能·wpf·adg·火山引擎·agent plan·adg成都社区
Vae_Mars2 天前
WPF中的Lazy<T>使用方法
wpf
zQ.ii2 天前
WPF 触发器学习笔记
笔记·学习·wpf
SamChan902 天前
用PostgreSQL+pgvector构建PDF翻译记忆库:向量相似度检索+增量更新实战
数据库·python·ai·postgresql·pdf·wpf
李高钢3 天前
开源控件库 HandyControl 介绍与简单实践:让 WPF 界面告别“上个世纪“
开源·wpf
旋生万物4 天前
【终极实战】用Python从零“生成“一个宇宙:螺旋干涉模型的代码实现
开发语言·前端·人工智能·react.js·php·wpf
Now喔4 天前
WPF画刷介绍
wpf
李高钢4 天前
WPF/WinForms 客户端通过 gRPC 与后端通信:从 Proto 契约到流式调用的完整指南
wpf·grpc·winforms
一见已难忘5 天前
基于 Harmony 6.0 应用的宠物寄养预约系统实现
wpf·宠物