Note - I don't have xamarin experience but I know how "window.open()" js works in WKWebView with native code so I hope this answer will help you connect the missing dots.
First, set UIDelegate where you configure your web view.. (in viewDidLoad in your case)
webView.uiDelegate = self
Second, implement this protocol method of UIDelegate. The idea is to create a web view on fly and a view controller on the fly and present/push it and return this web view instance to WebKit so it can establish the linkage with parent web view and load the url (first parameter of window.open call).
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
let childWebView = WKWebView(frame: .zero, configuration: configuration) // Must use the configuration provided by this method
let webViewController = ViewController() // create an instance of a new view controller that you want to push or present with a web view
webViewController.webView = childWebView // provide this new child web view to view controller for layout purpose
navigationController?.pushViewController(webViewController, animated: true)
return childWebView
}