En mi aplicación WPF, me gustaría mostrar algo que se parece a esto:¿Cómo puedo hacer que un enlace de datos de ancho de texto formateado sea localizable?
usuario Bob ha cerrado la sesión en 22:17.
Donde "Bob" y "22:17" son valores enlazados a datos.
La manera obvia de hacerlo sería utilizar un StackPanel
con múltiples TextBlock
niños, algunos de ellos los datos ligados:
<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/>
Esto funciona, pero es feo. Se supone que el programa está localizado en diferentes idiomas, y que tiene cadenas separadas para "El usuario" y "se ha desconectado en" es un destinatario para el desastre de localización.
Idealmente, me gustaría hacer algo como esto:
<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>
Así que el traductor vería una oración completa The user <Bold>{0}</Bold> has logged off at <Bold>{1}</Bold>
. Pero eso no funciona, por supuesto.
Esto tiene que ser un problema común, ¿cuál es la solución correcta para esto?