Я реализовал словарь общих ресурсов, приложение скомпилировано и запущено без проблем, но XAML-дизайнер не отображает понравившиеся ресурсы .
Дизайнер сообщает оследить за проблемами со свойством «Source»:
не может создать неизвестный тип {clr-namespace: [namespaces'object ...]}. SharedResourceDictionary
Я пытался перейти в другое пространство имен,в «корень приложения» и добавьте порядочность свойства в поле «Источник».
Я использую платформу WPF, C #, Visual Studio 2017 версия 15.9.5
Я забыл что-то возразить?
Код SharedResourceDictionarys следующий:
public class SharedResourceDictionary : ResourceDictionary
{
private Uri _sourceUri;
private static readonly Dictionary<Uri, ResourceDictionary> SharedDictionaries = new Dictionary<Uri, ResourceDictionary>();
public new Uri Source
{
get => _sourceUri;
set
{
_sourceUri = value;
if (!SharedDictionaries.ContainsKey(value))
{
base.Source = value;
SharedDictionaries.Add(value, this);
}
else
{
MergedDictionaries.Add(SharedDictionaries[value]);
}
}
}
}
Отредактировано:
Я обнаружил при этом ответе проблема вызвана
base.Source = value;
Я обернул его при попытке try, как предложено в ответе, а дизайнер непроблема отчета больше, но она не отображает представления.
Я частично исправил это, оборачивая свойство «Source» директивами препроцессора «Release», но если мне нужен тест памяти при отладке, я мог бы прокомментировать его.
Я также попробовал другой ответ , но импортируются только некоторые ресурсы, и я не понимаю, почему.
Отредактировано:
Я сообщил об этой проблеме в сообществе Visual Studio, но я исправил с помощью директив #debug и #release, как в следующем примере
public class SharedResourceDictionary : ResourceDictionary
{
#if RELEASE
private Uri _sourceUri;
private static readonly Dictionary<Uri, ResourceDictionary> SharedDictionaries =
new Dictionary<Uri, ResourceDictionary>();
public new Uri Source
{
get => _sourceUri;
set
{
_sourceUri = value;
if (!SharedDictionaries.ContainsKey(value))
{
base.Source = value;
SharedDictionaries.Add(value, this);
}
else
{
MergedDictionaries.Add(SharedDictionaries[value]);
}
}
}
#endif
}