Существует AttachedProperty, который можно прикрепить к любому объекту, и в данном конкретном случае это просто присоединение свойства с именем BindableSource типа String.
Возможно, вы захотитепрочитать статью MSDN о вложенных свойствах .
Это довольно просто: Свойства зависимостей работают со словарями, в которых элементы управления связаны со своими значениями для свойства, этоделает довольно простым добавление чего-то подобного присоединенным свойствам, которые могут расширять элемент управления.
В методе RegisterAttached
присоединенного свойства подключается PropertyChangedCallback
, который будет выполнен, если значение изменится.Использование свойства зависимости позволяет связать, что является точкой с самого начала.Все, что действительно делает свойство, это вызывает соответствующий код для навигации по браузеру, если значение изменяется.
Когда у нас есть "{Binding WebAddress}", это означает, что в некотором коде c # где-тообрабатывает этот файл .xaml, что-то похожее на [...]
Привязка ссылается на некоторое общедоступное свойство или свойство зависимостей ( не a поле ) называется WebAddress
внутри DataContext веб-браузера.Для получения общей информации о привязке данных см. Обзор привязки данных .
Поэтому, если вы хотите создать свойство, которое должно быть источником привязки, вы либо реализуете INotifyPropertyChanged
или вы создаете DependencyProperty (они запускают уведомления об изменениях самостоятельно, и вы обычно создаете их только для элементов управления и классов, связанных с пользовательским интерфейсом)
Ваше свойство может выглядеть следующим образом:
public class MyModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
private string _webAddress;
public string WebAddress
{
get { return _webAddress; }
set
{
if (value != _webAddress)
{
_webAddress = value;
NotifyPropertyChanged("WebAddress");
}
}
}
}
Здесь вы должны вызвать событие PropertyChanged
в установщике, как вы и предполагали.Как на самом деле объявить рабочие привязки в XAML - довольно широкая тема, и я хотел бы еще раз направить вас к вышеупомянутому Обзор привязки данных , который должен это объяснить.
И чтобы воспользоваться измененным свойством, я могу вызвать RaisedPropertyChanged, и он вызовет этот статический метод там?
Событие запускается, чтобы вызвать привязку для обновления, это, в свою очередь, меняет значениеприсоединенное свойство, которое, в свою очередь, вызывает выполнение PropertyChangedCallback
, которое в конечном итоге перемещается по браузеру.