Пример #1
0
        protected override bool UpdateAssets()
        {
            if (!this.NeedsUpdate)
            {
                return(false);
            }
            this.NeedsUpdate = false;
            ObservableCollectionWorkaround <Asset> collectionWorkaround = this.Assets.Clone();
            List <Asset> list = new List <Asset>(collectionWorkaround.Count);

            this.Assets.Clear();
            foreach (AssetProvider assetProvider in this.assetProviders)
            {
                foreach (Asset asset in (Collection <Asset>)assetProvider.Assets)
                {
                    list.Add(asset);
                }
            }
            collectionWorkaround.Sort(Asset.DefaultComparer);
            list.Sort(Asset.DefaultComparer);
            int index1 = 0;
            int index2 = 0;

            while (index1 < collectionWorkaround.Count && index2 < list.Count)
            {
                int num = collectionWorkaround[index1].CompareTo(list[index2]);
                if (num == 0)
                {
                    this.Assets.Add(list[index2]);
                    ++index1;
                    ++index2;
                }
                else if (num < 0)
                {
                    collectionWorkaround[index1++].IsValid = false;
                }
                else
                {
                    this.Assets.Add(list[index2++]);
                }
            }
            while (index1 < collectionWorkaround.Count)
            {
                collectionWorkaround[index1++].IsValid = false;
            }
            while (index2 < list.Count)
            {
                this.Assets.Add(list[index2++]);
            }
            foreach (Asset asset in (Collection <Asset>) this.Assets)
            {
                asset.IsValid = true;
            }
            this.NotifyAssetsChanged();
            return(true);
        }
Пример #2
0
        protected virtual ObservableCollectionWorkaround <LocalResourceModel> ProvideLocalResources(List <ResourceContainer> activeContainers)
        {
            ObservableCollectionWorkaround <LocalResourceModel> collectionWorkaround = new ObservableCollectionWorkaround <LocalResourceModel>();

            foreach (DocumentCompositeNode entryNode in this.DesignerContext.ResourceManager.GetResourcesInElementsScope((IList <ResourceContainer>)activeContainers, PlatformTypes.Object, ResourceResolutionFlags.IncludeApplicationResources | ResourceResolutionFlags.UniqueKeysOnly))
            {
                DocumentNode resourceEntryKey = ResourceNodeHelper.GetResourceEntryKey(entryNode);
                DocumentNode node             = entryNode.Properties[DictionaryEntryNode.ValueProperty];
                if (resourceEntryKey != null)
                {
                    DelayedEvaluationLocalResourceModel localResourceModel = new DelayedEvaluationLocalResourceModel(this.DocumentContext, this.DesignerContext, resourceEntryKey, node.TargetType, node);
                    collectionWorkaround.Add((LocalResourceModel)localResourceModel);
                }
            }
            collectionWorkaround.Sort((Comparison <LocalResourceModel>)((left, right) => string.Compare(left.ResourceName, right.ResourceName, StringComparison.CurrentCulture)));
            return(collectionWorkaround);
        }