2014-01-27 3 views
0

В XAML у меня есть что-то вроде этого:Чествование времени формат строки даты в StringFormatter

Text="{Binding my_date, StringFormat=\{0:ddd M/d/yy\}}" 

В настоящее время он выдает некоторые вещи, как Mon 12/23/13

Я хочу это в честь региона и языка даты, поэтому, если они выбирают yy/mm/dd, он должен показывать дату в правильном формате. Я знаю, что из параметров «d» должен сделать это, отсюда: http://msdn.microsoft.com/en-us/library/az4se3k1%28v=vs.110%29.aspx

Но по какой-то причине, когда он получает в сочетании с остальной частью форматере в

Text="{Binding my_date, StringFormat=\{0:ddd d\}}" 

Тогда он не работает правильно. Каков правильный формат, который я должен использовать в этом случае?

+0

который является конечный результат вы находясь в поиске? – FeliceM

+0

@FeliceM что-то вроде Mon 12/23/13 НО, если пользователь изменит формат даты на yyyy/MM/dd, то то же самое должно показать как Mon 2013/12/23 –

+0

У меня нет Silverlight, поэтому я не могу проверить, есть ли там это маскированное текстовое поле, доступное для Silverlight, но если оно есть, это может быть возможностью заставить пользователя записывать дату всегда в том же формате – FeliceM

ответ

1

Standard и custom строки не могут быть объединены в один строковый формат. Это нужно было сделать в два этапа:

var weekday = my_date.ToString("ddd"); 
var day = my_date.ToString("d"); 
var both = string.Format("{0} {1}", weekday, day); 

В XAML, это было бы более многословным, но должно работать (это непроверенные):

<TextBlock.Text> 
    <MultiBinding StringFormat="\{0\} \{1\}"> 
      <Binding Path="my_date" StringFormat="ddd" /> 
      <Binding Path="my_date" StringFormat="d" /> 
    </MultiBinding> 
</TextBlock.Text> 
+0

У меня нет многозадачности в Silverlight :( –

+0

Хм, может быть, я должен написать конвертер для него? –

+1

@DevWannaBe Либо конвертер, либо просто добавьте свойство readonly 'my_date_formatted', которое возвращает выше. – nmclean

Смежные вопросы