Ejemplo n.º 1
0
 public Chat(TabPage tab, TabTag tag, ListBox messageList)
 {
     Tab = tab; Tag = tag; MessageList = messageList;
 }
Ejemplo n.º 2
0
        // 创建一个新的标签
        public ChromiumWebBrowser CreateNewTab(string url, string refererUrl = null)
        {
            // 声明一个新的浏览器对象
            ChromiumWebBrowser browser = new ChromiumWebBrowser()
            {
                Address = url
            };
            BrowserSettings browserSettings = new BrowserSettings();

            browserSettings.Plugins = CefState.Enabled;
            browser.BrowserSettings = browserSettings;
            InitBrowser(browser);
            // 初始化浏览器地址栏和导航栏
            DockPanel TopBarPanel = new DockPanel()
            {
                Style = Resources["TopBarPanel"] as Style
            };

            DockPanel.SetDock(TopBarPanel, Dock.Top);
            // 回退 前进按钮 以及地址栏的位置
            DockPanel TopBarPanelIn = new DockPanel();

            Border TopBarPanelBorder = new Border();

            TopBarPanel.Children.Add(TopBarPanelBorder);
            TopBarPanelBorder.Child = TopBarPanelIn;
            // 回退按钮
            Button BtnBack = new Button()
            {
                Content  = "\xe6a4",
                Width    = 30,
                Height   = 24,
                FontSize = 17,
                Style    = Resources["IconButton"] as Style
            };

            // 绑定命令 将浏览器回退功能命令绑定到回退按钮上
            BtnBack.SetBinding(Button.CommandProperty, new Binding()
            {
                Source = browser.BackCommand
            });
            // 前进按钮
            Button BtnForward = new Button()
            {
                Content  = "\xe6a5",
                Width    = 30,
                Height   = 24,
                Margin   = new Thickness(5, 0, 0, 0),
                FontSize = 17,
                Style    = Resources["IconButton"] as Style
            };

            // 将浏览器前进功能命令绑定到前进按钮上
            BtnForward.SetBinding(Button.CommandProperty, new Binding()
            {
                Source = browser.ForwardCommand
            });
            // 文本地址栏
            TextBox TextAddress = new TextBox()
            {
                FontSize = 14,
                Height   = 24,
                Margin   = new Thickness(5, 0, 0, 0),
                Padding  = new Thickness(5, 0, 5, 0),
                Style    = Resources["TxtAddress"] as Style
            };

            TextBoxBindingUpdateOnEnterBehaviour behaviour = new TextBoxBindingUpdateOnEnterBehaviour();

            // 将行为附加到对象上
            behaviour.Attach(TextAddress);

            TextAddress.SetBinding(TextBox.TextProperty, new Binding()
            {
                Source = browser,
                Path   = new PropertyPath("Address"),
                // 绑定中数据流的方向 自动更新另一方
                Mode = BindingMode.TwoWay
            });;
            // 地址栏中添加 回退前进按钮以及地址栏
            TopBarPanelIn.Children.Add(BtnBack);
            TopBarPanelIn.Children.Add(BtnForward);
            TopBarPanelIn.Children.Add(TextAddress);

            // 初始化Tab控件可选项
            // 选项卡
            TabItem newTab = new TabItem()
            {
                Header = "New Tab",
                Style  = Resources["CloseTab"] as Style,
                // 边框粗细
                BorderThickness = new Thickness(0)
            };

            // 设置当前选中的第一项
            BrowserTabs.SelectedItem = newTab;
            newTab.Name  = "Tab_" + newTab.TabIndex;
            browser.Name = "Browser_" + newTab.TabIndex;
            newTab.SetBinding(TabItem.HeaderProperty, new Binding()
            {
                Mode          = BindingMode.OneWay,
                Source        = browser,
                Path          = new PropertyPath("Title"),
                FallbackValue = "info.tangce.cn"
            });
            // 选项卡中的样式内容等
            DockPanel TabItemPanel = new DockPanel()
            {
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch
            };

            newTab.Content = TabItemPanel;

            // 浏览器栏
            DockPanel BrowserPanel = new DockPanel()
            {
                VerticalAlignment = VerticalAlignment.Stretch
            };

            BrowserPanel.Children.Add(browser);

            // 进度条
            ProgressBar progressBar = new ProgressBar()
            {
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Top,
                Height          = 2,
                Style           = Resources["AutoWidth"] as Style,
                BorderThickness = new Thickness(0)
            };

            // 进度条绑定方法 浏览器是否加载中
            progressBar.SetBinding(ProgressBar.IsIndeterminateProperty, new Binding()
            {
                Path = new PropertyPath("IsLoading"), Source = browser
            });
            // 进度条嵌板 对象
            DockPanel ProgressPanel = new DockPanel()
            {
                Height = 2,
                // 元素显示状态 隐藏
                Visibility = Visibility.Hidden
            };

            // 进度条嵌板针对元素可见参数绑定
            // 如果加载中显示进度条嵌板
            ProgressPanel.SetBinding(DockPanel.VisibilityProperty, new Binding()
            {
                Path   = new PropertyPath("IsLoading"),
                Source = browser,
                // Visibility枚举值布尔转换器
                Converter = new BooleanToVisibilityConverter()
            });
            // 将进度条元素设置在Dock 底部
            DockPanel.SetDock(ProgressPanel, Dock.Bottom);
            // 将进度条放置到进度条嵌板中
            ProgressPanel.Children.Add(progressBar);
            // 将进度条嵌板 浏览器工具嵌板以及浏览器页面嵌板添加到标签选项卡中
            TabItemPanel.Children.Add(ProgressPanel);
            TabItemPanel.Children.Add(TopBarPanel);
            TabItemPanel.Children.Add(BrowserPanel);

            TabTag tabtag = new TabTag
            {
                IsOpen      = true,
                Browser     = browser,
                OrigURL     = url,
                CurURL      = url,
                Title       = browser.Title,
                RefererURL  = refererUrl,
                DateCreated = DateTime.Now
            };

            // 新的标签自定义信息
            newTab.Tag = tabtag;
            // 显示页面
            BrowserTabs.Items.Add(newTab);
            return(browser);
        }