如何强制TabItem在加载时初始化内容?

 zhengxing 发布于 2023-02-07 13:32

[免责声明:我是Visual Basic的新手.]

在WPF中,我有一个包含2个TabItems的TabControl:

第一个TabItem包含一堆URL.

第二个TabItem包含一个DockPanel,其中包含一个cefSharp webView(嵌入了.net的chrome)

当我点击tab1中的url时,它会在tab2中包含的浏览器中加载一个页面... 但是,只有在我通过单击tab2初始化浏览器时它才有效.

在进行一些搜索之后,看起来vb.net不会初始化TabItem中的内容,直到它变得可见.(对?)

所以,我的问题是,如何在后台强制一个未选中的选项卡在加载时初始化其内容?(即.所以我不必先点击选项卡或先切换到它)

编辑:

根据要求,这是相关代码:

相关的XAML由一个名为"mainBox"的DockPanel组成


这是我的"代码隐藏"vb脚本:

Class MainWindow : Implements ILifeSpanHandler, IRequestHandler

    Shared web_view1 As CefSharp.Wpf.WebView
    Shared web_view2 As CefSharp.Wpf.WebView

    Public Sub init(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Loaded

    'This is in a DockPanel created on the xaml named mainBox

        ' set up tabControl:
        Dim browserTabs As New TabControl()
        browserTabs.BorderThickness = Nothing

        Dim tab1 As New TabItem()
        tab1.Header = "My Tab"

        Dim tab2 As New TabItem()
        tab2.Header = "Browser"

        Dim tab1Content As New DockPanel()
        Dim tab2Content As New DockPanel()

        tab1.Content = tab1Content
        tab2.Content = tab2Content

        browserTabs.Items.Add(tab1)
        browserTabs.Items.Add(tab2)

        mainBox.Children.Add(browserTabs)

        ' set up browsers:
        Dim settings As New CefSharp.Settings()
        settings.PackLoadingDisabled = True

        If CEF.Initialize(settings) Then

            web_view1 = New CefSharp.Wpf.WebView()
            web_view1.Name = "myTabPage"
            web_view1.Address = "http://stackoverflow.com/"

            web_view2 = New CefSharp.Wpf.WebView()
            web_view2.Name = "browserPage"
            web_view2.Address = "https://www.google.com"
            web_view2.LifeSpanHandler = Me
            web_view2.RequestHandler = Me

            AddHandler web_view2.PropertyChanged, AddressOf web2PropChanged

            tab1Content.Children.Add(web_view1)
            tab2Content.Children.Add(web_view2)

        End If

    End Sub
End Class

因此,在默认状态下,tab1在启动时显示 - tab2(web_view2)上的浏览器将不会初始化,直到我单击其选项卡或通过脚本更改为其选项卡.希望这有点清除它.

1 个回答
  • 您的代码不使用Windows Forms,TabPage但也许这可能仍然有用

    我们知道,在显示标签页之前,不会创建TabPage中包含的控件,并且在显示标签页之前不会激活这些控件中的任何数据绑定.这是设计使然,您可以TabPage.Show()逐个调用方法作为解决方法.

    通过MSDN论坛

    另外,基于上述想法,您是否尝试过以下操作.

    tab2.isEnabled = True
    tab1.isEnabled = True
    

    要么:

    tab2.Visibility = True
    tab1.Visibility = True
    

    此外,BeginInit方法可能对您的情况有所帮助.

    2023-02-07 13:34 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有