示例#1
0
        private void FieldDescriptionsProvider_GetDescriptionsDataAsyncCompleted(object sender, GetDescriptionsDataCompletedEventArgs e)
        {
            var filedDescriptionProvider = sender as IFieldDescriptionProvider;

            this.StopListeningForGetDescriptionsData(filedDescriptionProvider);

            IDataProvider provider = this;

            if (provider.FieldDescriptionsProvider != filedDescriptionProvider)
            {
                return;
            }

            if (e.Error == null)
            {
                this.descriptionsData = e.DescriptionsData;
                this.InitializeDescriptions();

                this.OnStatusChanged(new DataProviderStatusChangedEventArgs(DataProviderStatus.DescriptionsReady, false, null));

                if (this.refreshRequested)
                {
                    this.Refresh();
                }
            }
            else
            {
                this.OnStatusChanged(new DataProviderStatusChangedEventArgs(DataProviderStatus.Uninitialized, false, e.Error));
            }
        }
        protected void RefreshFieldDescriptions()
        {
            this.descriptionsData = null;

            IDataProvider provider = this as IDataProvider;

            if (this.FieldDescriptionsReadyForUpdate)
            {
                this.OnStatusChanged(new DataProviderStatusChangedEventArgs(DataProviderStatus.Initializing, false, null));

                provider.FieldDescriptionsProvider.GetDescriptionsDataAsyncCompleted += this.FieldDescriptionsProvider_GetDescriptionsDataAsyncCompleted;
                provider.FieldDescriptionsProvider.GetDescriptionsDataAsync(this.State);
            }
        }
示例#3
0
            public void GetDescriptionsDataAsync()
            {
                Exception ex = null;

                try
                {
                    this.GetDescriptionsDataAsync(null);
                }
                catch (Exception e)
                {
                    ex        = e;
                    this.data = new EmptyFieldInfoData();
                }

                this.OnDescriptionsDataCompleted(new GetDescriptionsDataCompletedEventArgs(ex, null, this.data));
            }
示例#4
0
        protected void RefreshFieldDescriptions()
        {
            this.descriptionsData = null;

            IDataProvider provider = this;

            if (this.FieldDescriptionsProvider != null && !this.FieldDescriptionsProvider.IsBusy)
            {
                if (this.ItemsSource != null)
                {
                    this.OnStatusChanged(new DataProviderStatusChangedEventArgs(DataProviderStatus.Initializing, false, null));

                    provider.FieldDescriptionsProvider.GetDescriptionsDataAsyncCompleted += this.FieldDescriptionsProvider_GetDescriptionsDataAsyncCompleted;
                }

                provider.FieldDescriptionsProvider.GetDescriptionsDataAsync(this.State);
            }
        }
示例#5
0
        private void GetDescriptionsData()
        {
            Exception error = null;

            try
            {
                this.IsBusy = true;
                this.data   = this.GenerateDescriptionsData();
            }
            catch (Exception e)
            {
                error     = e;
                this.data = new EmptyFieldInfoData();
            }
            finally
            {
                this.OnDescriptionsDataCompleted(new GetDescriptionsDataCompletedEventArgs(error, this.CurrentState, this.data));
            }
        }
示例#6
0
 internal static void UpdateFilterMemberAccess(IFieldInfoData data, IEnumerable <FilterDescriptorBase> descriptors)
 {
     foreach (var filterDescriptor in descriptors)
     {
         var propertyFilterDescriptor = filterDescriptor as PropertyFilterDescriptor;
         if (propertyFilterDescriptor != null)
         {
             IDataFieldInfo field = data.GetFieldDescriptionByMember(propertyFilterDescriptor.PropertyName);
             if (field != null)
             {
                 propertyFilterDescriptor.MemberAccess = field as IMemberAccess;
             }
         }
         else
         {
             var compositeFilter = filterDescriptor as CompositeFilterDescriptor;
             if (compositeFilter != null)
             {
                 UpdateFilterMemberAccess(data, compositeFilter.Descriptors);
             }
         }
     }
 }
示例#7
0
        private static void InitializeMemberAccess(IEnumerable <DescriptionBase> descriptions, IFieldInfoData fieldInfoData)
        {
            IMemberAccess access;

            foreach (var item in descriptions)
            {
                access = fieldInfoData.GetFieldDescriptionByMember(item.GetMemberName()) as IMemberAccess;
                if (access != null)
                {
                    item.MemberAccess = access;
                }
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="GetDescriptionsDataCompletedEventArgs"/> class.
        /// </summary>
        public GetDescriptionsDataCompletedEventArgs(Exception error, object userState, IFieldInfoData data)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }

            this.DescriptionsData = data;
            this.Error            = error;
            this.State            = userState;
        }
示例#9
0
 public override void GetDescriptionsDataAsync(object state)
 {
     this.data = this.ActionToExecuteAsync();
 }