【问题标题】:XAML Bind a TextBox with WebView's current URLXAML 将 TextBox 与 WebView 的当前 URL 绑定
【发布时间】:2015-03-20 12:18:58
【问题描述】:

我正在尝试用 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,但我已经实现了。我曾尝试处理NavigationStartingNavigationCompletedNavigationFailed(已弃用)、LoadCompleted(已弃用),但当用户单击WebView 中的链接时,它们都不能帮助我获取新的 URL。 (事件处理程序仅在我执行webView-&gt;Navigate 时调用一次。不用说,{Binding ElementName=webView,Path=Source,Mode=TwoWay} 似乎不起作用。)

我应该怎么做才能同步WebView的URL和TextBox?应该有一个简单的方法来做到这一点。

【问题讨论】:

    标签: xaml c++-cx


    【解决方案1】:

    您好,您可以使用的是。

    公开一个属性

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-14
      • 2013-03-29
      • 2018-11-09
      • 2013-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多