XAML使用WebView';s当前的URL

XAML使用WebView';s当前的URL,xaml,c++-cx,Xaml,C++ Cx,我正在尝试用XAML制作一个基本浏览器: <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <TextBox x:Name="urlBox" Text="{Binding El

我正在尝试用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
中的链接时,URL
TextBox
会相应地更新,当然,如果用户输入URL并按下[Enter]按钮,
WebView
应该导航到指定的URL,但我已经实现了这一点。我尝试过处理
NavigationStarting
NavigationCompleted
NavigationFailed
(已弃用),
LoadCompleted
(已弃用),但在用户单击
WebView
中的链接时,它们都不能帮助我获得新的URL。(当我执行
webView->Navigate
时,事件处理程序只被调用一次。不用说,
{Binding ElementName=webView,Path=Source,Mode=TwoWay}
似乎不起作用。)


如何同步
WebView
的URL和
文本框
?应该有一个简单的方法来做到这一点。

嗨,你可以使用的是

暴露财产

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"/>

因此,每次浏览器将导航到一个新的URL时,您公开的属性的值都会通过调用NotifyPropertyChanged进行更改,并更新您的文本框