Форматирование нескольких связанных полей в одном TextBlock в XAML - PullRequest
3 голосов
/ 14 января 2010

У меня есть 2 поля, которые я хотел бы отформатировать в TextBlock, например: «{0} из {1} часов использовано».

В настоящее время есть:

<TextBlock Text="{Binding HoursEntered}" />
<TextBlock Text=" of " />
<TextBlock Text="{Binding EstimatedHours}"  />
<TextBlock Text=" hours used "  />

Проверял StringFormat для отдельного поля, однако, похоже, это доступно только для WPF, но не для Silverlight:

<TextBlock Text="{Binding Path=HoursEntered, StringFormat='{0} of XX hours used'}"/>

Я думал использовать MultiBinding, но это не доступно в Silverlight 3?

Как сделать строку формата с несколькими связанными полями в Silverlight 3 xaml?

Ответы [ 3 ]

2 голосов
/ 14 января 2010

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

Public ReadOnly Property HoursUsedMessage() As String
    Get
        Return String.Format("{0} of {1} hours used", _hoursEntered, _estimatedHours)
    End Get
End Property

просто убедитесь, что вы также генерируете уведомление свойства для этого свойства в установщиках HoursEntered и EstimatedHours

0 голосов
/ 16 августа 2011

Обновление для Silverlight 4: теперь вы можете использовать опцию String.Format.

<Button Content=”{Binding username, StringFormat=’Log Out of \{0\} Account’}“/>
0 голосов
/ 18 января 2010

Если вы хотите более динамичное решение, вы можете использовать конвертер. Я сделал небольшой пример, см. Ссылку ниже. Для краткости я использовал привязку элементов, но она работает с любой привязкой данных.

http://pastebin.com/f4465f5ae

...