В моей сборке призмы определен словарь ресурсов, содержащий шаблоны данных. Моя цель - задать для них атрибут DataType=""
для обеспечения безопасности типов, а также сохранить строки x:Key=""
в отдельном файле .resx для повторного использования. Я нашел этот ответ stackOverflow , в котором обсуждается использование {x:Static }
для доступа к тексту, причем гораздо более многословный подход необходим, чтобы к ним не обращались таким образом.
К сожалению, похоже, что использование вышеуказанных методов вместе приводит к тому, что значение x:Key
по умолчанию равно nameof(DataType)
, что вызывает проблемы, когда несколько типов определяются с разными ключами.
Вот пример сценария:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Namespace.Class"
xmlns:resources="clr-namespace:Namespace">
// Key is the value of the .resx string "MyResxString"
<DataTemplate x:Key="{x:Static resources:Text.MyResxString}"/>
// Key is "myClass"
<DataTemplate DataType="{x:Type myClass}"/>
// Key is "example"
<DataTemplate x:Key="Example" DataType="{x:Type myClass}" />
// Key is unexpectedly "myClass" and my static string is ignored in the key attribute
<DataTemplate x:Key="{x:Static resources:Text.MyResxString}"
DataType="{x:Type myClass}"/>
</ResourceDictionary>
Это предполагаемый результат этого связывания или здесь что-то не так? Есть ли альтернативный подход к тому же? (Я понимаю, что .resx не самый лучший подход, но это наш стандарт)