SharedResourceDictionary: edytuj zasób w Blend

Aby zoptymalizować moją aplikację, tworzę SharedResourceDictionary. Dzięki temu oszczędzam około 250 MB pamięci w czasie wykonywania, więc działa dobrze.

Mój problem tkwi w czasie projektowania, w Blend 4 nie mam już dostępu do mojego zasobu. Aby zmodyfikować szablon (który znajduje się w moim pliku zasobów), zwykle klikam prawym przyciskiem myszy na mojej kontroli i wybieram Edytuj szablon -> Edytuj bieżący, jak na tym obrazku:

Muszę zmodyfikować mój szablon w ten sposób, jest 100 razy szybszy niż w moim pliku zasobów i znaleźć dobry ... Mam dużo zasobów ...

Mój SharedResourceDictionary jest zaimplementowany w ten sposób (znaleziony w sieci):

public class SharedResourceDictionary : ResourceDictionary
{
    /// <summary>
    /// Internal cache of loaded dictionaries 
    /// </summary>
    public static Dictionary<Uri, ResourceDictionary> _sharedDictionaries =
        new Dictionary<Uri, ResourceDictionary>();

    /// <summary>
    /// Local member of the source uri
    /// </summary>
    private Uri _sourceUri;

    /// <summary>
    /// Gets or sets the uniform resource identifier (URI) to load resources from.
    /// </summary>
    public new Uri Source
    {
        get
        {
            if (IsInDesignMode)
                return base.Source;

            return _sourceUri;
        }
        set
        {
            _sourceUri = value;

            if (!_sharedDictionaries.ContainsKey(value))
            {
                // If the dictionary is not yet loaded, load it by setting
                // the source of the base class
                base.Source = value;

                // add it to the cache
                _sharedDictionaries.Add(value, this);
            }
            else
            {
                // If the dictionary is already loaded, get it from the cache
                MergedDictionaries.Add(_sharedDictionaries[value]);
            }
        }
    }

    /// <summary>
    /// Check if we are in Blend to prevent error
    /// </summary>
    public bool IsInDesignMode
    {
        get
        {
            return
            (bool)
            DependencyPropertyDescriptor.FromProperty(DesignerProperties.IsInDesignModeProperty,
            typeof(DependencyObject)).Metadata.DefaultValue;
        }
    }
}

Ktoś ma pomysł, czy istnieje rozwiązanie tego problemu? Naprawdę chcę zachować ten wspólny słownik ze względu na poprawę pamięci, ale chcę też łatwo zmodyfikować mój zasób ...

Wszelkie wskazówki zostaną docenione. Dziękuję Ci.

EDYTOWAĆ:

Robiąc to (SharedResourceDictionary), mam również problem ze źródłem statycznym:

Provide value on 'System.Windows.Markup.StaticResourceHolder' threw an exception.

A kiedy zmieniam je na zasoby dynamiczne, to działa lub jeśli zmieniam SharedResourceDictionary za pomocą prostego ResourceDictionary, to również działa. Projekt może się skompilować, ale nie mogę edytować zasobu bez modyfikacji, tak jak powiedziałem.

questionAnswers(2)

yourAnswerToTheQuestion