我已经学习了一周的视觉基础,但我完全陷入了困境。
我在 WPF 的 XAML 中有一个带有 2 个 TabItems 的 TabControl:
<TabControl Name="browser_tabs" Width="Auto" Height="Auto" BorderThickness="0">
<TabItem Header="My Page">
<DockPanel Name="tab1" Width="Auto" Height="Auto" Background="#fefefe" />
</TabItem>
<TabItem Header="Browser" Name="browserTab">
<DockPanel Name="tab2" Width="Auto" Height="Auto" Background="#fefefe" />
</TabItem>
</TabControl>
我正在尝试从 MainWindow 类中的书签控件Obj 类中更改选项卡(以编程方式/有问题):
Class MainWindow
...
Public Class bookmarkControlsObj
Public Sub follow(ByVal url As String)
browser_tabs.selectedIndex = 1 '<--- ahhhhhhhhhhhhhhhhhhh!'
web_view2.Load(url)
End Sub
End Class
End Class
但我不断收到“ Reference to a non-shared member requires an object reference.
”——我不知道如何在 bookmarkControlsObj 类中共享 XAML TabControl ......这让我发疯了。请帮忙。
编辑:
我有一个嵌套类的原因是因为我从一个cefsharp(嵌入chrome)WebView调用类中的“follow”Sub,该WebView包含一个带有Javascript函数的页面——使用RegisterJsObject
我可以调用vb.net通过 Javascript 的方法。在这种情况下,我将一个 url 发送到“follow” Sub,它将它加载到第二个 TabItem 中包含的浏览器中,但我希望它在加载之前自动切换到该选项卡——长话短说,RegisterJsObject
似乎只能工作如果它包含在一个类中.. 虽然它只是嵌套的,因为那是它结束的地方。
我可以在该类的第二个选项卡中访问浏览器,因为我将其声明为“共享”并将其添加到 TabItem - 但我不确定如何将 TabControl (以可视方式设置)声明为共享
如果有帮助,这里是 RegisterJSObject 的链接: https ://github.com/ataranto/CefSharp/blob/master/CefSharp/CefSharp.h#L116