我正在尝试在XAML中创建一个基本的浏览器:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBox x:Name="urlBox"
Text="{Binding ElementName=webView,Path=Source,Mode=TwoWay}"
KeyDown="OnUrlEnter" AcceptsReturn="False"
TextWrapping="Wrap"/>
<WebView Grid.Row="1" x:Name="webView"/>
</Grid>
我想要的是,当用户点击WebView
中的链接时,网址TextBox
会相应更新,当然,如果用户输入网址并按[Enter]按钮, webView
应导航到指定的网址,但我已经实现了这一点。我尝试过处理NavigationStarting
,NavigationCompleted
,NavigationFailed
(已弃用),LoadCompleted
(已弃用)但当用户点击{中的链接时,这些都无法帮助我获取新网址{1}}。 (事件处理程序仅在我执行WebView
时调用一次。不用说,webView->Navigate
似乎不起作用。)
如何同步{Binding ElementName=webView,Path=Source,Mode=TwoWay}
的网址和WebView
?应该有一个简单的方法来做到这一点。
答案 0 :(得分:0)
您可以使用的是。
公开属性
private string browserURL;
public string BrowserURL
{
get{return browserURL;}
set{ browserURL=value;
NotifyPropertyChanged("BrowserURL");
}
}
public constructor()
{
WebBrowser.Navigating += WebBrowser_Navigating;
this.DataContext= this;
}
private void TechMCaresBrowsercontroll_Navigating(object sender, NavigatingEventArgs e)
{
browserURL=e.Uri;
}
XAML代码
<TextBox x:Name="urlBox"
Text="{Binding BrowserURL}"
KeyDown="OnUrlEnter" AcceptsReturn="False"
TextWrapping="Wrap"/>
因此,每次浏览器导航到新网址时,您公开的属性值都会更改,调用NotifyPropertyChanged并更新您的文本框。