MonoMobile.Views.MemberData.SetValue C# (CSharp) Method

SetValue() protected method

protected SetValue ( object value ) : void
value object
return void
		protected virtual void SetValue(object value)
		{	
			var shouldSetHandlers = false;		
			object oldValue = null;
			UnconvertedValue = value;
			var convertedValue = value;

			
			if (_DataContextValue != value || _Value != value)
			{
				if (_DataContextValue != value)
				{
					if (DataContextMember != null)
					{						
						var targetType = DataContextMember.GetMemberType();
						convertedValue = ConvertbackValue(value, targetType);

						oldValue = DataContextMember.GetValue(DataContextSource);
						if (oldValue != value)
						{
							shouldSetHandlers = true;
							
							if (DataContextMember.CanWrite())
							{
								DataContextMember.SetValue(DataContextSource, convertedValue);
							}
						}
	
						_DataContextValue = convertedValue;
					}
				}
	
				if (_Value != convertedValue)
				{
					var targetType = Member.GetMemberType();
					convertedValue = ConvertValue(value, targetType);

					oldValue = Member.GetValue(Source);
					if (oldValue != value)
					{							
						shouldSetHandlers = true;
	
						if (Member.CanWrite())
						{
							Member.SetValue(Source, convertedValue);
						}
					}
	
					_Value = convertedValue;
				}
			}

			if (shouldSetHandlers)
			{
				AddNotifyCollectionChangedHandler(value, this);

				AddNotifyPropertyChangedHandler(DataContextSource, this); 
				AddNotifyPropertyChangedHandler(Source, this); 
			}

			Type = Member.GetMemberType();
			Id = CreateId();
		}