У меня небольшой вопрос, но я нашел довольно много разных, и в основном неоднозначных, ответов:
У меня есть следующий пользовательский элемент управления, и я пытаюсь привязать к публичному свойству в этом элементе управления (События). Все говорят, что я должен использовать контекст данных, однако я не хочу этого делать ... Я просто хочу привязать свойство к элементу управления
XAML ...
Требование заключается в том, что привязка должна быть двухсторонней, поэтому любые изменения в пользовательском интерфейсе будут отражены в свойстве (или, скорее, в коллекции), к которому она привязана. Каждый объект Event в этой коллекции также реализует INotifyPropertyChanged так же, как этот элемент управления ...
Любые идеи будут с благодарностью!
public partial class EventEditorWindow : UserControl, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<Event> events;
public ObservableCollection<Event> Events
{
get { return this.events; }
set
{
if( this.events != value )
{
this.events = value;
this.RaisePropertyChanged("Events");
}
}
}
private void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
this.VerifyPropertyName(propertyName);
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
[Conditional("DEBUG")]
[DebuggerStepThrough]
public void VerifyPropertyName(string propertyName)
{
var currentObjectType = this.GetType();
if (currentObjectType.GetProperty(propertyName) == null)
{
throw new ArgumentException("Property not found", propertyName);
}
}
}
Спасибо,
Bleepzter.