Как я могу сделать привязку данных ширины форматированного TextBlock локализуемой?

В моем приложении WPF я хотел бы отобразить что-то похожее на это:

Пользователь Боб вышел из системы в 22:17 .

Где «Боб» и «22:17» - значения с привязкой к данным.

Очевидный способ для этого нужно использовать StackPanel с несколькими дочерними элементами TextBlock , некоторые из которых привязаны к данным:

<StackPanel Orientation="Horizontal">
   <TextBlock Text="The user"/>
   <TextBlock Text="{Binding Path=Username}" TextBlock.FontWeight="Bold" />
   <TextBlock Text="has logged off at"/>
   <TextBlock Text="{Binding Path=LogoffTime}" TextBlock.FontWeight="Bold" />
</StackPanel/>

Это работает, но уродливо. Предполагается, что программа будет локализована на разные языки, и наличие отдельных строк для «Пользователь» и «вышел из системы в» является причиной неудачи с локализацией.

В идеале, я хотел бы сделать что-то вроде этого:

<TextBlock>
     <TextBlock.Text>
         <MultiBinding StringFormat="{}The user <Bold>{0}</Bold> has logged off at <Bold>{1}</Bold>">
             <Binding Path="Username" />
             <Binding Path="LogoffTime" />
         </MultiBinding>
</TextBlock>

Таким образом, переводчик увидит полное предложение Пользователь {0} вышел из системы на {1} . Но это, конечно, не работает.

Это должна быть общая проблема, что? Правильное ли решение для этого?

13
задан Niki 2 December 2010 в 18:14
поделиться