private void SetState(IVirtualList list, QueuedBackgroundWorkerState loadingState)
            {
                if (list == List && loadingState == LoadingState)
                {
                    return;
                }

                List         = list;
                LoadingState = loadingState;
                VirtualListLoadingIndicator loadingIndicator = LoadingIndicator;
                bool oldIsVisible = loadingIndicator != null;
                bool newIsVisible = LoadingState != QueuedBackgroundWorkerState.Standby;

                if (oldIsVisible == newIsVisible)
                {
                    if (newIsVisible)
                    {
                        loadingIndicator.SetState(List, LoadingState);
                    }
                }
                else if (newIsVisible)
                {
                    AdornerManager.SetAdorner(_itemsControl, new VirtualListLoadingIndicator(List, LoadingState));
                }
                else
                {
                    AdornerManager.SetAdorner(_itemsControl, null);
                }
            }
        private static void CanExecuteRetryCommand(object sender, CanExecuteRoutedEventArgs e)
        {
            VirtualListLoadingIndicator control = (VirtualListLoadingIndicator)sender;

            e.CanExecute = control.HasError;
        }