Как использовать статический ресурс (.resx) в качестве ключа к шаблону данных с типом данных в словаре ресурсов? - PullRequest
0 голосов
/ 09 января 2019

В моей сборке призмы определен словарь ресурсов, содержащий шаблоны данных. Моя цель - задать для них атрибут 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 не самый лучший подход, но это наш стандарт)

...