Задать Source для WebBrowser в WPF

438
03 августа 2017, 22:12

Есть приложение C# WPF в котором присутствует 2 WPF Window на одной несколько кнопок и WebBrowser на другой. При щелчке по одной из кнопок на открывается второе окно а WebBrowser отображает некоторую страницу. Каждый раз страница может быть другой. Код обработчик кнопок :

      ActiveInfo active = new ActiveInfo();
      active.URI = YahooFinans.httpString(YahooFinans.Tikker(row.Type));
      active.Show();

Окно с браузером :

public partial class ActiveInfo : Window
{
    public ActiveInfo()
    {
        InitializeComponent();
    }
    public string URI { get; set; }
}

И XAML разметка :

<Window.DataContext>
    <Binding RelativeSource="{RelativeSource Self}"/>
</Window.DataContext>
<Grid>
    <WebBrowser Source="{Binding URI}">  !!!
    </WebBrowser>
</Grid>

И именно на разметке падает исключение : System.Windows.Markup.XamlParseException

Дополнительные сведения: "Binding" нельзя задать в свойстве "Source" типа "WebBrowser". "Binding" можно задать только в параметре DependencyProperty объекта DependencyObject.

Как с этим бороться? Пробовал контекст данных вывести в отдельный класс но ошибка та же.

Answer 1

Раз у вас MainWindow не имплементирует INPC и URI — не dependency property, то смысла в привязке особого нет.

Попробуйте так:

public partial class ActiveInfo : Window
{
    public ActiveInfo()
    {
        InitializeComponent();
    }
    public Uri URI
    {
        get => browser.Source;
        set => browser.Source = value;
    }
}

и XAML:

<Grid>
    <WebBrowser Name="browser"/>
</Grid>
READ ALSO
Развернуть базу данных из бэкапа на удаленной машине

Развернуть базу данных из бэкапа на удаленной машине

Я пытаюсь перенести базу данных с локальной машины на удаленнуюИз локального SQL Server я создаю backup и сохраняю его в расшаренную папку на удаленном...

208
Visual Studio Online открытие проекта

Visual Studio Online открытие проекта

Я только осваиваю разработку в облакеМне нужно иметь доступ к коду с разных компов под одной учётной записью

200
Не увеличивает переменную в JS?

Не увеличивает переменную в JS?

Есть простой код: http://jsbincom/yulaturibe/edit?html,js,console,output

306