В моем приложении 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>
Итак, переводчик увидит полное предложение The user <Bold>{0}</Bold> has logged off at <Bold>{1}</Bold>
. Но это не работает, конечно.
Это должна быть общая проблема, какое правильное решение для этого?