protected override object GetRawValueInternal(IBindingMemberInfo targetMember, IDataContext context, bool throwOnError) { IBindingPathMembers members = _bindingSource.GetPathMembers(throwOnError); return(members.LastMember.GetValue(members.PenultimateValue, null)); }
protected override object GetRawValueInternal(IBindingMemberInfo targetMember, IDataContext context, bool throwOnError) { IBindingPathMembers members = _bindingSource.GetPathMembers(throwOnError); var value = members.GetLastMemberValue(); if (members.Path.IsDebuggable) { DebugInfo($"Binding got a raw value: '{value}', for path: '{members.Path}'", new[] { value, members }); } return(value); }
private void TrySubscribe(IObserver source) { var pathMembers = source.GetPathMembers(false); if (IsDirectSource) { if (!pathMembers.AllMembersAvailable) { return; } var value = pathMembers.GetLastMemberValue(); if (!ReferenceEquals(value, BindingConstants.ErrorsSourceValue)) { return; } } var dataErrorInfo = pathMembers.PenultimateValue as INotifyDataErrorInfo; if (dataErrorInfo == null) { return; } var subscriber = BindingServiceProvider.WeakEventManager.TrySubscribe(dataErrorInfo, ErrorsChangedEvent, this); if (subscriber != null) { _subscribers.Add(subscriber); } }
private void SetDefaultValue(IObserver source) { var pathMembers = source.GetPathMembers(false); if (pathMembers.AllMembersAvailable) { object value = _value; if (!pathMembers.LastMember.Type.IsInstanceOfType(value)) value = pathMembers.LastMember.Type.GetDefaultValue(); pathMembers.LastMember.SetValue(pathMembers.PenultimateValue, new[] { value }); } }
private static bool IsAllMembersAvailable(this IObserver observer, bool checkLastMember) { var pathMembers = observer.GetPathMembers(false); if (!pathMembers.AllMembersAvailable) { return(false); } if (checkLastMember && pathMembers.LastMember.CanRead) { return(!pathMembers.LastMember.GetValue(pathMembers.PenultimateValue, Empty.Array <object>()).IsUnsetValue()); } return(true); }
private void SetDefaultValue(IObserver source) { var pathMembers = source.GetPathMembers(false); if (pathMembers.AllMembersAvailable) { object value = _value; if (!pathMembers.LastMember.Type.IsInstanceOfType(value)) { value = pathMembers.LastMember.Type.GetDefaultValue(); } pathMembers.LastMember.SetSingleValue(pathMembers.PenultimateValue, value); } }
private void TrySubscribe(IObserver source) { var dataErrorInfo = source.GetPathMembers(false).PenultimateValue as INotifyDataErrorInfo; if (dataErrorInfo == null) { return; } var subscriber = BindingServiceProvider.WeakEventManager.TrySubscribe(dataErrorInfo, ErrorsChangedEvent, this); if (subscriber != null) { _subscribers.Add(subscriber); } }
internal static object GetCurrentValue(this IObserver source) { IBindingPathMembers pathMembers = source.GetPathMembers(true); object value = pathMembers.LastMember.GetValue(pathMembers.PenultimateValue, null); if (value.IsUnsetValue()) { return(null); } var actionValue = value as BindingActionValue; if (actionValue == null) { return(value); } return(actionValue.GetValue(null)); }
private void CollectErrors(ref List <object> errors, IObserver bindingSource) { var pathMembers = bindingSource.GetPathMembers(false); if (IsDirectSource) { if (!pathMembers.AllMembersAvailable) { return; } var value = pathMembers.GetLastMemberValue(); if (!ReferenceEquals(value, BindingConstants.ErrorsSourceValue)) { return; } } var notifyDataErrorInfo = pathMembers.PenultimateValue as INotifyDataErrorInfo; if (notifyDataErrorInfo == null) { return; } var path = bindingSource.Path.Parts.LastOrDefault(); if (!IsDirectSource) { CollectErrors(notifyDataErrorInfo, path, ref errors); } var paths = ErrorPaths; if (paths == null || paths.Length == 0) { if (IsDirectSource) { CollectErrors(notifyDataErrorInfo, string.Empty, ref errors); } return; } for (int i = 0; i < paths.Length; i++) { CollectErrors(notifyDataErrorInfo, paths[i], ref errors); } }
private void CollectErrors(ref List <object> errors, IObserver bindingSource) { var notifyDataErrorInfo = bindingSource.GetPathMembers(false).PenultimateValue as INotifyDataErrorInfo; if (notifyDataErrorInfo == null) { return; } var path = bindingSource.Path.Parts.LastOrDefault(); var paths = ErrorPaths; if (!string.IsNullOrEmpty(path) || paths == null || paths.Length == 0) { CollectErrors(notifyDataErrorInfo, path, ref errors); } if (paths != null) { for (int i = 0; i < paths.Length; i++) { CollectErrors(notifyDataErrorInfo, paths[i], ref errors); } } }
/// <summary> /// Gets the source object include the path members. /// </summary> /// <param name="throwOnError"> /// true to throw an exception if the source is not valid. /// </param> public IBindingPathMembers GetPathMembers(bool throwOnError) { return(_observer.GetPathMembers(throwOnError)); }
private void CollectErrors(ref List<object> errors, IObserver bindingSource) { var notifyDataErrorInfo = bindingSource.GetPathMembers(false).PenultimateValue as INotifyDataErrorInfo; if (notifyDataErrorInfo == null) return; var path = bindingSource.Path.Parts.LastOrDefault(); var paths = ErrorPaths; if (!string.IsNullOrEmpty(path) || paths == null || paths.Length == 0) CollectErrors(notifyDataErrorInfo, path, ref errors); if (paths != null) { for (int i = 0; i < paths.Length; i++) CollectErrors(notifyDataErrorInfo, paths[i], ref errors); } }
private void TrySubscribe(IObserver source) { var dataErrorInfo = source.GetPathMembers(false).PenultimateValue as INotifyDataErrorInfo; if (dataErrorInfo == null) return; var subscriber = BindingServiceProvider.WeakEventManager.TrySubscribe(dataErrorInfo, ErrorsChangedEvent, this); if (subscriber != null) _subscribers.Add(subscriber); }