/// <summary>
 /// 设置值
 /// </summary>
 /// <typeparam name="T">值类型</typeparam>
 /// <param name="property">依赖属性</param>
 /// <param name="storage">值存储</param>
 /// <param name="value">值</param>
 public void SetValue <T>(DependencyProperty <T> property, IDependencyValueStorage storage, T value)
 {
     storage.AddOrUpdate(this, property, o => new LocalEffectiveValue <T>(value), (k, o) =>
     {
         ((LocalEffectiveValue <T>)o).SetValue(value);
         return(o);
     });
 }
 public Task SetValue <T>(DependencyProperty <T> property, IDependencyValueStorage storage, T value)
 {
     return(storage.AddOrUpdate(this, property, o => new LocalEffectiveValue <T>(value), async(k, o) =>
     {
         await((LocalEffectiveValue <T>)o).SetValue(value);
         return o;
     }));
 }
示例#3
0
        ClearValue <T>(DependencyProperty <T> property, IDependencyValueStorage storage)
        {
            IEffectiveValue <T> eValue;

#if ECS_SERVER
            return
                (#endif
            storage.TryRemove(this, property, out eValue));
        }
        public bool TryGetValue <T>(DependencyProperty <T> property, IDependencyValueStorage storage, out T value)
        {
            IEffectiveValue <T> eValue;

            if (storage.TryGetValue(this, property, out eValue))
            {
                value = eValue.Value;
                return(true);
            }
            value = default(T);
            return(false);
        }
        public bool TryGetValue <T>(DependencyProperty <T> property, IDependencyValueStorage storage, out BindingBase value)
        {
            IEffectiveValue <T> eValue;

            if (storage.TryGetValue(this, property, out eValue))
            {
                value = ((BindingEffectiveValue <T>)eValue).Binding;
                return(true);
            }
            value = null;
            return(false);
        }
示例#6
0
 private bool TryGetCurrentEffectiveValueExcept(DependencyProperty key, IDependencyValueStorage except, out IEffectiveValue value)
 {
     foreach (var storage in _storages.Values)
     {
         if (storage == except)
         {
             continue;
         }
         if (storage.TryGetCurrentEffectiveValue(key, out value))
         {
             return(true);
         }
     }
     value = null;
     return(false);
 }
        public void ClearValue <T>(DependencyProperty <T> property, IDependencyValueStorage storage)
        {
            IEffectiveValue <T> eValue;

            storage.TryRemove(this, property, out eValue);
        }
        public Task ClearValue <T>(DependencyProperty <T> property, IDependencyValueStorage storage)
        {
            IEffectiveValue <T> eValue;

            return(storage.TryRemove(this, property, out eValue));
        }
示例#9
0
        private void UpdateStorage(DependencyValueStorageKey key, IDependencyValueStorage old, IDependencyValueStorage value)
        {
            var dps = value.Keys.Union(old.Keys).ToList();

            UpdateStorage(dps, () => _storages[key] = value);
        }
示例#10
0
        private void RemoveStorage(DependencyValueStorageKey key, IDependencyValueStorage storage)
        {
            var dps = storage.Keys.ToList();

            UpdateStorage(dps, () => _storages.Remove(key));
        }
示例#11
0
        private void AddStorage(DependencyValueStorageKey key, IDependencyValueStorage storage)
        {
            var dps = storage.Keys.ToList();

            UpdateStorage(dps, () => _storages.Add(key, storage));
        }
 public void SetValue <T>(DependencyObject d, DependencyProperty <T> property, IDependencyValueStorage storage, BindingBase value)
 {
     storage.AddOrUpdate(this, property, o => new BindingEffectiveValue <T>(d, value), (k, o) => new BindingEffectiveValue <T>(d, value));
 }