Я пишу пользовательский контроль с помощью WebBrowser и одного свойства зависимостей. После изменения в тексте я хотел бы обновить вывод браузера.Пользовательский контроль с помощью WebBrowser в C#
public class BrowserControl : Control
{
//....
public static readonly DependencyProperty ContentProperty =
DependencyProperty.Register("Text", typeof(object), typeof(BrowserControl), new UIPropertyMetadata(null));
public String Text
{
get { return (String)GetValue(ContentProperty); }
set { SetValue(ContentProperty, value);
br = new WebBrowser();
br.NavigateToString(value);
}
}
private WebBrowser br;
public WebBrowser Browser { get; set; }
}
Я установил этот элемент управления в приложение wpf, но нет выхода из управления. Я думаю, что мне нужно изменить шаблон управления. Общий шаблон выглядит следующим образом:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:BrowserControl">
<Style TargetType="{x:Type local:BrowserControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:BrowserControl}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
Я новичок в этом и не знаю, как поставить WebBrowser, как видимый элемент всего элемента управления?
Также я хотел бы знать, как использовать привязку с TextBox и свойство Text BrowserControl в приложении WPF. Я хочу сделать что-н, как:
<TextBox ... Text="{Binding Path=browserCtrl.Text}" ...>
Так что, когда текст в TextBox изменить пользовательский элемент управления будет засавить сайта в браузере.
Это именно то, что я хочу, но связывание не работает. У меня есть Text = "{Binding ElementName = browserCtrl, Path = Text, Mode = TwoWay}" и. Мой элемент управления находится в другом проекте, основной ссылке на использование приложения. Все работает, если я использую событие textChanged. –
tobix10
Я понял. UpdateSourceTrigger = PropertyChanged, и он работает. – tobix10
Вы не должны использовать UpdateSourceTrigger = PropertyChanged, поскольку это вызовет WebBrowser.Navigate() для каждого нажатия клавиши печати, которое вы будете выполнять в текстовом поле! Причина, по которой ваша привязка не работает, заключается в том, что вам необходимо разрешить ваше пространство имен «local». Ищите онлайн-справку для правильного разрешения пространства имен. –