У меня возникла проблема с моим кодом ниже, где обратный вызов вызывается только в первый раз, когда установлен DocText. Впоследствии установка DocText не вызывает мой обратный вызов. Я пытаюсь сбросить html браузера, установив ту же строку в свойство DocText.Обратный звонок не работает во второй раз
класс WebBrowser
public static readonly DependencyProperty DocumentTextProperty =
DependencyProperty.Register("DocumentText", typeof(string),
typeof(WebBrowser), new
FrameworkPropertyMetadata(string.Empty,TextChangedCallback));
private static void TextChangedCallback(DependencyObject
dependencyObject, DependencyPropertyChangedEventArgs
dependencyPropertyChangedEventArgs)
{
var control = (WebBrowser)dependencyObject;
control._browser.DocumentText = dependencyPropertyChangedEventArgs.NewValue.ToString();
}
public string DocumentText
{
get { return (string)GetValue(DocumentTextProperty); }
set { SetValue(DocumentTextProperty, value); }
}
завод класс, который создает экземпляр веб-браузера с помощью браузеров набор привязки, чтобы связать свойство зависимостей с «DocText»
if (!String.IsNullOrEmpty(documentTextProperty))
{
browser.SetBinding(WebBrowser.DocumentTextProperty, documentTextProperty);
}
И documentTextProperyt в настоящее время установленным в соответствии с классом ViewModel
DocText = "some html string";
public string DocText
{
get
{
_docText = if(html != null? html: string.empty);
return _docText;
}
set
{
docText = value;
OnPropertyChanged(() = DocText);
}
}
Спасибо Kiran, но мне нужно иметь привязку, определенную в классе фабрики, между свойством dependency и свойством View Model, чтобы при использовании кода i менялось значение свойства View Model, обновляемого браузером. – Kaddy
Привет, товарищ, я не очень уверен, может быть в том заводском методе, который вы пытаетесь установить для свойства Dependency вашего элемента управления. Если это верно, то вы не используете правильный метод для установки значения. Метод SetBinding используется для установки привязки к элементу управления. С другой стороны, метод SetValue используется для обновления значения свойства зависимостей элемента управления. Ниже приведены фрагменты, демонстрирующие дальнейшее использование сложных комментариев. –
// DocumentText = "{Binding TestString, Mode = OneWay}" myControl.SetBinding (MaskedTextBox.DocumentTextProperty, новый Binding() {Source = DataContext, Path = new PropertyPath (nameof (TestString)), Mode = BindingMode.OneWay}); TestString = «тестирование»; // это будет показано в управлении «тестирование», так как управление переплетено СравниваемаяСтрока собственность» myControl.SetValue (MaskedTextBox.DocumentTextProperty,„Другое тестирование“); // это будет показано в управлении«Another тестирования 'потому что значение свойства управления обновляется программно здесь " –