Ошибка или функция в TextBlock в Silverlight 4? - PullRequest
5 голосов
/ 16 ноября 2011

Мне было весело с привязками TextBlock в Silverlight 4.
У меня следующая ситуация:

<TextBlock Text="{Binding Date, StringFormat=g}" />
<TextBlock>
    <Run Text="{Binding Date, StringFormat=g}"/>
<TextBlock>

Где Date - это свойство типа System.DateTime.
Я не изменил текущую культуру приложения.

Культура моей машины - Болгария (BG-BG).Например:

TextBlock 1: 16.11.2011 12:49
TextBlock 2: 16.11.2011 г.12:49 ч.

Интересно то, что первый TextBlock форматирует дату и время, используя культуру en-Us (или инвариант по умолчанию), а второй использует культуру bg-BG,Ситуация становится еще более странной, поскольку документация MSDN для элемента управления Silverlight TextBlock гласит:

Если InlineCollection создается из XAML как внутренний текст элемента объекта TextBlock, или , еслисоздается путем установки свойства Text, InlineCollection содержит один прогон, содержащий этот текст .

Я что-то здесь упустил или это можно считать ошибкой в ​​Silverlight 4?

1 Ответ

2 голосов
/ 29 февраля 2012

Мы обнаружили, что вам необходимо убедиться, что Language элемента управления установлен правильно, чтобы он правильно соответствовал настройкам языка. В нашем случае это было для символов валюты, но я предполагаю, что та же проблема возникает и для дат.

Тим Хойер (Tim Heuer) имеет сообщение в блоге , озаглавленное «StringFormat и CurrentCulture in Silverlight».

Решение состоит в том, чтобы добавить следующую строку в конструктор представления:

this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);

Это не объясняет, почему он работает правильно для <Run>

...