В WPF: ключевые проблемы пространства при использовании Пользовательское расширение разметки в VS2010


Мы разработали решение для локализации с использованием пользовательского расширения разметки в VS 2008.

В то время мы использовали его следующим образом:

<TextBlock Text={utilsWpf:Intl Key=ObjectName.PropertyName, DefaultText=Default Name} />

(Обратите внимание на пробел в DefaultText). (Обратите внимание также, как инструмент text-color StackOverflow также изменяет цвет слов).

Но он прекрасно работает и компилируется без проблем.

В VS 2010, однако, всякий раз, когда вы пытаетесь ввести пробел, используя этот способ реализации расширения разметки, IDE всегда добавляет запятую для вас, что дает:

<TextBlock Text={utilsWpf:Intl Key=ObjectName.PropertyName, DefaultText=Default, Name} />

Конечно, он больше не компилируется...

Одним из решений является реализация этого расширения разметки другим способом:

<TextBlock>
    <TextBlock.Text>
       <utilsWpf:Intl Key="ObjectName.PropertyName", DefaultText="Default Name"/>
    </TextBlock.Text>
</TextBlock>
Но он добавляет много строк, и у нас нет только одного текстового блока, как вы можете себе представить...

Другое решение - не вводить пространство, а скопировать другое пространство и вставить его (которое все еще компилируется в VS 2010, но довольно грубо).

На мой взгляд, наше решение-не самая лучшая практика.

Какие лучшие практика вы бы посоветовали, чтобы иметь возможность вводить пробелы без неудобств?

Спасибо за вашу проницательность.

1 2

1 ответ:

Попробуйте использовать одинарные кавычки:

<TextBlock Text="{utilsWpf:Intl Key=ObjectName.PropertyName, DefaultText='Default Name'}" />