Как объявить пустую строку в XAML ResourceDictionary - PullRequest
15 голосов
/ 26 августа 2011

У меня есть ResourceDictionary, который содержит строки:

<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <sys:String x:Key="Foo">Hello world</sys:String>
    ...
</ResourceDictionary>

Этот словарь является частью темы, а в некоторых темах некоторые строки пусты:

    <sys:String x:Key="Foo"></sys:String>

Проблема в том, что в этом случае я получаю XamlParseException:

Невозможно создать объект типа 'System.String'.Ошибка CreateInstance, которая может быть вызвана отсутствием общедоступного конструктора по умолчанию для 'System.String'

Я знаю, что можно объявить пустую строку в ресурсе массива, используя <x:Static Member="sys:String.Empty" />, ноЯ не хочу массив ... Использование x:Static напрямую, поскольку ресурс возвращает расширение разметки, а не строку.Помещение x:Static в элемент sys:String приводит к той же ошибке, что и раньше.

Можно ли даже объявить пустую строку как ресурс XAML?Как?

1 Ответ

21 голосов
/ 26 августа 2011

Объявление его с помощью x:Static, кажется, прекрасно работает для меня ...

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:Test"
            xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <x:Static x:Key="empty" Member="sys:String.Empty" />
</ResourceDictionary>
 cc.Content = (string)FindResource("empty"); //Casts to string without exception
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...