コード例 #1
0
        void _gridClickManager_DoubleClick(object sender, MouseButtonEventArgs e)
        {
            DataGridRow dgrow = sender as DataGridRow;
            PageResourceContentLoader load = new PageResourceContentLoader();

            load.BeginLoad(new Uri(page + ".xaml", UriKind.Relative), null, new AsyncCallback(r =>
            {
                LoadResult ui             = load.EndLoad(r);
                CustomChildWindow showWin = (CustomChildWindow)ui.LoadedContent;
                showWin.ParamValue        = dgrow.DataContext;
                showWin.Show();
            }), 1);
        }
コード例 #2
0
        private static void OnSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ContentControl c = (ContentControl)d;

            if (e.NewValue == null)
            {
                return;
            }
            PageResourceContentLoader load = new PageResourceContentLoader();

            load.BeginLoad(new Uri(e.NewValue + ".xaml", UriKind.Relative), null, new AsyncCallback(r =>
            {
                LoadResult ui = load.EndLoad(r);
                c.Content     = ui.LoadedContent;
            }), 1);
        }
コード例 #3
0
        private static void OnSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            if (e.NewValue == null)
            {
                return;
            }
            MyFrame c = (MyFrame)d;
            PageResourceContentLoader load = new PageResourceContentLoader();

            load.BeginLoad(new Uri(e.NewValue.ToString(), UriKind.Relative), null, new AsyncCallback(r =>
            {
                LoadResult ui = load.EndLoad(r);
                c.Children.Clear();
                c.Children.Add((UIElement)ui.LoadedContent);
            }), 1);
        }
コード例 #4
0
        private static void OnPageNameChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            Panel c = (Panel)d;
            //获取页面缓存
            List <NameAndFrame> pages = GetPanelPages(c);

            //旧页面变为不可见
            if (e.OldValue != null)
            {
                NameAndFrame oldNaf = GetChildren((string)e.OldValue, pages);
                if (oldNaf != null)
                {
                    oldNaf.frame.Visibility = Visibility.Collapsed;
                }
            }
            if (e.NewValue == null)
            {
                return;
            }
            string newName = (string)e.NewValue;
            //如果不包含页面,说明页面没有打开,打开页面
            NameAndFrame newui = GetChildren(newName, pages);

            if (newui == null)
            {
                PageResourceContentLoader load = new PageResourceContentLoader();
                load.BeginLoad(new Uri(e.NewValue + ".xaml", UriKind.Relative), null, new AsyncCallback(r =>
                {
                    LoadResult ui         = load.EndLoad(r);
                    FrameworkElement page = (FrameworkElement)ui.LoadedContent;
                    c.Children.Add(page);
                    //添加到页面缓存中
                    NameAndFrame newpage = new NameAndFrame(newName, page);
                    pages.Add(newpage);
                }), 1);
            }
            else
            {
                //修改页面为可见
                newui.frame.Visibility = Visibility.Visible;
                //将新的放到栈顶
                pages.Remove(newui);
                pages.Add(newui);
            }
        }
コード例 #5
0
ファイル: ChildWindowObj.cs プロジェクト: DDGIT/restv2
        public static void OnIsOpenChanged(DependencyObject dp, DependencyPropertyChangedEventArgs args)
        {
            object newVal = args.NewValue;

            //IsOpen为True,并且有子窗口名称,创建子窗口并显示
            if (newVal != null && (bool)newVal)
            {
                ChildWindowObj cwo = (ChildWindowObj)dp;
                if (cwo.CWName == null)
                {
                    throw new Exception("子窗口名称为空");
                }
                PageResourceContentLoader load = new PageResourceContentLoader();
                load.BeginLoad(new Uri(cwo.CWName + ".xaml", UriKind.Relative), null, new AsyncCallback(r =>
                {
                    LoadResult ui             = load.EndLoad(r);
                    CustomChildWindow showWin = (CustomChildWindow)ui.LoadedContent;
                    if (cwo.ParamObj != null)
                    {
                        showWin.ParamValue = cwo.ParamObj;
                    }
                    showWin.Show();
                    showWin.Parent = dp;
                    //注册关闭事件获取返回值
                    showWin.Closed += (o, e) =>
                    {
                        CustomChildWindow cw = (CustomChildWindow)o;
                        if (cw.ReturnValue != null)
                        {
                            cw.ReturnValue.ToString();
                            cwo.Result = cw.ReturnValue;
                            cwo.OnCompleted();
                        }
                        cwo.OnCompleted(new AsyncCompletedEventArgs(null, false, null));
                    };
                }), 1);
                cwo.IsOpen = false;
            }
        }