for (i = 0; i 
                if (string.Equals(DataList[i].Header, header))
 
                fm.Source = new Uri(url, UriKind.Relative);
 
                DataList.Add(new TabControlModel
 
                TabSelectedIndex = DataList.ToArray().Length - 1;
 
二、关闭tab
- 
 
- 
 
- 
 
- 
        public RelayCommand
 
 
- 
 
- 
                new RelayCommand
 
 
- 
 
- 
        public void CloseTab(Button btn)
 
 
- 
 
- 
            TabItem tbc = FindParentTabControl(btn);
 
 
- 
            foreach (TabControlModel item in DataList)
 
 
- 
 
- 
                if (item.Equals(tbc.Content))
 
 
- 
 
- 
 
- 
 
- 
 
- 
 
- 
 
- 
 
- 
 
- 
 
- 
 
- 
 
- 
 
- 
        private TabItem FindParentTabControl(DependencyObject reference)
 
 
- 
 
- 
            DependencyObject dObj = VisualTreeHelper.GetParent(reference);
 
 
- 
 
- 
 
- 
            if (dObj.GetType() == typeof(TabItem))
 
 
- 
 
- 
 
- 
                return FindParentTabControl(dObj);
 
 
- 
 
三、刷新
viewmodel和ViewModelLocator增加时间参数传递
- 
public PIndexViewModel(string dateTime)
 
 
- 
 
- 
            MenuList = GetMenuList();
 
 
- 
 
- 
            DataList = GetTabControlDataList();
 
 
- 
 
- 
            //接收其他页面传递的消息,第二个参数为消息key,控制接收对象
 
 
- 
            Messenger.Default.Register(this, "AddTab", ReceiveInfo);
 
 
- 
 
- 
 
- 
            timer = new DispatcherTimer();
 
 
- 
            timer.Interval = TimeSpan.FromSeconds(1);
 
 
- 
            timer.Tick += new EventHandler(TimerTick);
 
 
- 
 
- 
 
- 
SimpleIoc.Default.Register(() => new PIndexViewModel(DateTime.Now.ToString("HH:mm:ss")));
 
 
- 
 
- 
public PIndexViewModel PIView
 
 
- 
 
- 
 
- 
 
- 
                return ServiceLocator.Current.GetInstance
(DateTime.Now.ToString("HH:mm:ss"));
 
 
- 
 
- 
 
四、传参
WPF程序是客户端程序,也就是说每个用户在自己的机器上启动的WPF程序,这些程序是互相独立的,因此不会出现多个用户同时访问的问题。
表单传值和querystring[]传值的方法是因为ASP.NET背后的HTTP协议是无状态协议,因此需要在不同的页面之间(因为Web服务器不会记住各页面的状态)传递信息。 而WPF程序里面的各个page都是运行在同一个进程空间内,共享同一块内存,所以用Application.Current.Properties就可以了。
- 
private void Jt(string param)
 
 
- 
 
- 
 
- 
            Application.Current.Properties["pjt"] = param;
 
 
- 
            SendInfo = "{ \"header\":\"测试\" , \"url\":\"/Pages/PJt.xaml\" }";
 
 
- 
            //消息传递给PindexModel接收,打开新的页面,第二个参数为消息key,控制接收对象
 
 
- 
            Messenger.Default.Send(SendInfo, "AddTab");
 
 
- 
 
- 
 
- 
public PJtViewModel(string dateTime)
 
 
- 
 
- 
            string param=(string)Application.Current.Properties["pjt"];
 
 
- 
            Model = GetXfInfo(param);
 
 
- 
 
- 
 
- 
            //接收其他页面传递的消息,第二个参数为消息key,控制接收对象
 
 
- 
            Messenger.Default.Register(this, "Xfpc_xtxfsx", ReceiveXfpcXtxfsx);
 
 
- 
            Messenger.Default.Register(this, "Xfpc_sqyy", ReceiveXfpcSqyy);
 
 
- 
            Messenger.Default.Register(this, "Xfpc_ccxf", ReceiveXfpcCcxf);
 
 
- 
 
- 
 
- 
 
- 
            Messenger.Default.Registerstring[]>(this, MsgTypes.列表信息控制_Callback, res =>
 
 
- 
 
- 
 
- 
 
- 
 
- 
 
- 
 
- 
 
- 
 
- 
 
 
WPF TabControl Page 新增、关闭、传参、刷新
标签:reac   for   因此   tac   命令   date   服务器   comment   timer   
原文地址:https://www.cnblogs.com/lonelyxmas/p/12208817.html