public override void OnUserInput(object value) { if (NotificationGate.IsInbound) { var scheduler = UpdateScheduler.Begin(); try { if (_hasChildObject && value != null) { value = ((IObjectInstance)value).WrappedObject; } ClassProperty.SetObjectValue(ObjectInstance.WrappedObject, value); } finally { if (scheduler != null) { using (NotificationGate.BeginOutbound()) { foreach (IUpdatable updatable in scheduler.End()) { updatable.UpdateNow(); } } } } } }
public override void UpdateNodes() { using (NotificationGate.BeginOutbound()) { _depProperty.OnGet(); } if (_child != null) { _child.UpdateNodes(); } }
public override void Dispose() { if (_child != null) { ObjectInstance.Tree.RemoveKey(_child.WrappedObject); _child.Dispose(); } using (NotificationGate.BeginOutbound()) { ObjectInstance.ClearValue(ClassProperty.DependencyProperty); } _depProperty.Dispose(); }