Example #1
0
        /// <summary>
        /// SetValue Delegate CallBack 및 OldValue Dispose
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="newValue"></param>
        /// <param name="disposeOldValue"></param>
        /// <param name="raiseChangedDelegate"></param>
        /// <param name="oldValue"></param>
        /// <param name="propertyName"></param>
        private void PostCallback <T>(T newValue, bool disposeOldValue, RaisePropertyChangedDelegate <T> raiseChangedDelegate, T oldValue, [CallerMemberName] string propertyName = "")
        {
            NotifyPropertyChanged(propertyName);
            if (raiseChangedDelegate != null)
            {
                raiseChangedDelegate(oldValue, newValue);
            }
            if (!disposeOldValue)
            {
                return;
            }
            IDisposable disposableOldValue = oldValue as IDisposable;

            if (disposableOldValue != null)
            {
                disposableOldValue.Dispose();
            }
        }
Example #2
0
        /// <summary>
        /// 현재값과 들어온 값이 같은 경우에도 이벤트를 발생하게 한다.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="field"></param>
        /// <param name="newValue"></param>
        /// <param name="disposeOldValue"></param>
        /// <param name="raiseChangedDelegate"></param>
        /// <param name="isEquals">OldValue.Equals(NewValue) = true 일 경우에도 raiseProperty 이벤트를 발생 시킨다.</param>
        /// <param name="propertyName"></param>
        private void SetValue <T>(ref T field, T newValue, bool disposeOldValue, RaisePropertyChangedDelegate <T> raiseChangedDelegate, bool isEquals, [CallerMemberName] string propertyName = "")
        {
            if (!isEquals && Equals(field, newValue))
            {
                return;
            }
            T oldValue = field;

            field = newValue;

            if (_syncContext == null)
            {
                PostCallback <T>(newValue, disposeOldValue, raiseChangedDelegate, oldValue, propertyName);
            }
            else
            {
                _syncContext.Send(delegate {
                    PostCallback <T>(newValue, disposeOldValue, raiseChangedDelegate, oldValue, propertyName);
                }, null);
            }
        }
        protected void SetValue <T>(string propertyName, ref T field, T newValue, bool disposeOldValue, RaisePropertyChangedDelegate <T> raiseChangedDelegate)
        {
            if (object.Equals(field, newValue))
            {
                return;
            }
            T oldValue = field;

            field = newValue;
            RaisePropertyChanged(propertyName);
            if (raiseChangedDelegate != null)
            {
                raiseChangedDelegate(oldValue, newValue);
            }
            if (!disposeOldValue)
            {
                return;
            }
            IDisposable disposableOldValue = oldValue as IDisposable;

            if (disposableOldValue != null)
            {
                disposableOldValue.Dispose();
            }
        }
 protected void SetValue <T>(string propertyName, ref T field, T newValue, RaisePropertyChangedDelegate <T> raiseChangedDelegate)
 {
     SetValue <T>(propertyName, ref field, newValue, false, raiseChangedDelegate);
 }
Example #5
0
 /// <summary>
 /// 속성값 Binding 설정(PropertyChanged Delegate 전달)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="field"></param>
 /// <param name="newValue"></param>
 /// <param name="raiseChangedDelegate">PropertyChanged Delegate</param>
 /// <param name="propertyName"></param>
 protected void SetValue <T>(ref T field, T newValue, RaisePropertyChangedDelegate <T> raiseChangedDelegate, [CallerMemberName] string propertyName = "")
 {
     SetValue <T>(ref field, newValue, false, raiseChangedDelegate, propertyName);
 }
Example #6
0
 /// <summary>
 /// 속성값 Binding 설정(동일값 PropertyChanged 발생유무)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="field"></param>
 /// <param name="newValue"></param>
 /// <param name="disposeOldValue">oldValue Dispose 여부</param>
 /// <param name="isEquals">oldValue = newValue 동일한 값 PropertyChanged 이벤트 발생 여부</param>
 /// <param name="raiseChangedDelegate">PropertyChanged Delegate</param>
 /// <param name="propertyName"></param>
 protected void SetValue <T>(ref T field, T newValue, bool disposeOldValue, bool isEquals, RaisePropertyChangedDelegate <T> raiseChangedDelegate = null, [CallerMemberName] string propertyName = "")
 {
     SetValue <T>(ref field, newValue, disposeOldValue, raiseChangedDelegate, isEquals, propertyName);
 }