C# Связывание WPF между WebBrowser и TextBox - PullRequest
0 голосов
/ 14 февраля 2020

Я работаю в браузере, защищенном паролем, но привязка, которую я установил между Textbox (для iput uri) и WebBrowser, не работает, как хотелось бы. Я уже несколько часов готовлю Binding, и это первый раз, когда что-то работает.

Что должен делать мой Binding: просто "синхронизировать" URI браузера и Textbox.

Что это на самом деле: Когда я пишу ссылку в текстовом поле (например, google.de), браузер переходит на Google, и текстовое поле обновляется до фактического полного URI. когда я ищу что-то в google или go на картинках google, текстовое поле не обновляется.

XAML:

    <TextBox x:Name="address"
                         Height="30"
                         Margin="5" 
                         MinWidth="400"
                         KeyDown="Go_Uri_KeyDown"
                         Text="{Binding ElementName=browser, Path=Source.AbsoluteUri, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                         VerticalAlignment="Center"
                         FontSize="18"
                         VerticalContentAlignment="Center"
                         />
<WebBrowser x:Name="browser" 
                        Margin="5,45,5,5" 
                        Source="https://google.de"
                        HorizontalAlignment="Left" 
                        VerticalAlignment="Top" ScrollViewer.VerticalScrollBarVisibility="Auto" SnapsToDevicePixels="True"
                    />

Eventhandler текстового поля для навигации:

private void Go_Uri_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if (e.Key == Key.Return)
            {
                Uri uri = new Uri(this.address.Text, UriKind.RelativeOrAbsolute);
                if (!uri.IsAbsoluteUri)
                {
                    string url = "https://" + this.address.Text;
                    this.address.Text = url;
                    uri = new Uri(this.address.Text, UriKind.RelativeOrAbsolute);
                    if (!uri.IsAbsoluteUri)
                    {
                        return;
                    }
                }
                this.browser.Navigate(uri);
            }
        }

если вам понадобится дополнительная информация, я предоставлю все, что могу.

...