У меня есть DependencyObject с DependencyProperty:связывания данных свойства зависимостей для объекта данных
public class DependencyObjectClass: DependencyObject
{
public static DependencyProperty BooleanValueProperty = DependencyProperty.Register("BooleanValue", typeof (bool), typeof (DependencyObjectClass));
public bool BooleanValue
{
get { return (bool)GetValue(BooleanValueProperty); }
set { SetValue(BooleanValueProperty, value); }
}
}
У меня также есть источник данных класс:
public class DataSource: INotifyPropertyChanged
{
private bool _istrue;
public bool IsTrue
{
get { return _istrue; }
set
{
_istrue = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("IsTrue"));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
Я пытаюсь связать два вышеуказанных объектов с этот код:
var dependencyObject = new DependencyObjectClass();
var dataSource = new DataSource();
var binding = new Binding("IsTrue");
binding.Source = dataSource;
binding.Mode = BindingMode.TwoWay;
BindingOperations.SetBinding(dependencyObject, DependencyObjectClass.BooleanValueProperty, binding);
Всякий раз, когда я изменить свойство BooleanValue на DependencyObjectClass, то Dat aSource реагирует, но он не работает наоборот (изменение свойства IsTrue на DataSource ничего не делает для DependencyObjectClass).
Что я делаю неправильно? Нужно ли вручную обрабатывать событие OnPropertyChanged? Если да, то это будет немного неутешительно, поскольку я ожидал, что это будет сделано автоматически.
Вопрос только в том, что это за намерение? вы создаете настраиваемый элемент управления? –
Я также обнаружил некоторую проблему с привязкой к свойствам bool. Если мы уведомляем о том же значении из VM в View, оно не отражается в setter DependencyProperty. Если у вас есть истинное значение IsTrue, а затем вы снова присваиваете ему true, то установщик DependencyProperty doesnt отражают его. Это означает, что если вы снова установите одно и то же значение, оно не будет отражено установщиком DependencyProperty. – ethicallogics
HighCore, я в основном реализую шаблон MVVM для объектов, отличных от WPF. Я кодирую надстройку, где мне нужно использовать некоторые элементы пользовательского интерфейса сторонних разработчиков, поэтому я решил обернуть их в свои собственные классы, полученные из DependencyObject. Любые предложения приветствуются. – jur