XAML使用WebView的当前URL绑定TextBox

时间:2015-03-20 00:11:13

标签: xaml c++-cx

我正在尝试在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应导航到指定的网址,但我已经实现了这一点。我尝试过处理NavigationStartingNavigationCompletedNavigationFailed(已弃用),LoadCompleted(已弃用)但当用户点击{中的链接时,这些都无法帮助我获取新网址{1}}。 (事件处理程序仅在我执行WebView时调用一次。不用说,webView->Navigate似乎不起作用。)

如何同步{Binding ElementName=webView,Path=Source,Mode=TwoWay}的网址和WebView?应该有一个简单的方法来做到这一点。

1 个答案:

答案 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并更新您的文本框。