【发布时间】:2014-01-18 02:04:08
【问题描述】:
[免责声明:我是 Visual Basic 的新手。]
在 WPF 中,我有一个包含 2 个 TabItems 的 TabControl:
第一个 TabItem 包含一堆 URL。
第二个 TabItem 由一个 DockPanel 组成,该 DockPanel 包含一个 cefSharp webView(用于 .net 的铬嵌入)
当我点击 tab1 中的 url 时,它会在 tab2 中包含的浏览器中加载一个页面... 但是,它只有在我首先通过点击 tab2 初始化浏览器时才有效。
在进行了一些搜索之后,看起来 vb.net 并没有初始化 TabItem 中的内容,直到它变得可见。 (对吧?)
所以,我的问题是,如何强制未选择的选项卡在加载时在后台初始化其内容? (即,因此我不必先单击选项卡或切换到它)
编辑:
根据要求,相关代码如下:
相关的 XAML 由一个名为“mainBox”的 DockPanel 组成
<DockPanel Name="mainBox" Width="Auto" Height="Auto" Background="#afe0ff" />
这是我的“代码隐藏”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) 上的浏览器在我单击其选项卡或通过脚本切换到其选项卡之前不会初始化。希望这能澄清一点。
【问题讨论】:
-
-
@eran otzap,感谢您抽出宝贵时间查看此问题——我使用相关代码编辑了我的问题。
-
这个问题有一个很好的(但仍然很老套)的解决方案:stackoverflow.com/questions/30337976/…
标签: wpf vb.net tabcontrol cefsharp