Databinding in WPF/XAML is all about reacting to objects raising events on themselves when data changes. It is what allows the user interface controls to update themselves without you having to write code to redraw a row, treenode, or perhaps the entire control.
Via databinding in XAML, you essentially tell the control to subscribe to the PropertyChanged event on the individual object property (the syntax does this on its own). Then, inside the data object, you have to include code to raise the PropertyChanged event inside the property "set" portion of the get/set of the property. Using something like an ObservableCollection as your data store takes care of raising events when the contents of the collection change but it does not address data object property value changes on items in the ObservableCollection.
The easiest way to implement this is to create a sort of DataObjectBase class that contains all of the required aspects of implementing INotifyPropertyChanged. There isn't all whole lot that is required.
Then you have all applicable data object classes inherit DataObjectBase. Something like this:
public class ArticleAdmin : MyNamespace.DataObjectBase, INotifyPropertyChanged
Your property would look like this:
private Guid _userID = System.Guid.Empty;
public Guid UserID
{
get
{
return _userID;
}
set
{
if (value != _userID)
{
_userID = value;
PropertyChangedHandler(this, "UserID"); // method in DataObjectBase to raise event.
}
}
}
There is a good example of how to implement it on MSDN:
http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx