在我的WPF应用程序,我想展示的东西,看起来像这样:如何使格式化的TextBlock宽度数据绑定可本地化?
用户鲍勃已在22:17注销。
其中“Bob”和“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>
。但是,这当然不起作用。
这是一个常见问题,对此有什么正确的解决方案?