В моем приложении 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>
Таким образом, переводчик увидит полное предложение Пользователь
. Но это, конечно, не работает.
Это должна быть общая проблема, что? Правильное ли решение для этого?