System.Windows.Data.CollectionViewNode.UpdateValue C# (CSharp) Method

UpdateValue() public method

public UpdateValue ( ) : void
return void
		public override void UpdateValue ()
		{
			var oldValue = Value;
			// The simple case - we use the source object directly, whatever it is.
			if (BindsDirectlyToSource) {
				ValueType = Source == null ? null : Source.GetType ();
				Value = Source;
			} else {
				var usableSource = Source;
				ICollectionView view = null;
				if (Source is CollectionViewSource) {
					usableSource = null;
					view = ((CollectionViewSource) Source).View;
				} else if (Source is ICollectionView) {
					view = (ICollectionView) Source;
				}

				// If we have no ICollectionView, then use the Source directly.
				if (view == null) {
					ValueType = usableSource == null ? null : usableSource.GetType ();
					Value = usableSource;
				} else {
					// If we have an ICollectionView and the property we're binding to exists
					// on ICollectionView, we bind to the view. Otherwise we bind to its CurrentItem.
					if (BindToView) {
						ValueType = view.GetType ();
						Value = view;
					} else {
						ValueType = view.CurrentItem == null ? null : view.CurrentItem.GetType ();
						Value = view.CurrentItem;
					}
				}
			}
		}
	}