In meiner WPF-Anwendung, würde Ich mag, etwas zeigen, das wie folgt aussieht:Wie kann ich eine formatierte TextBlock Breite Datenbindung lokalisierbar machen?
Benutzer Bob hat bei 22.17 abgemeldet.
Dabei sind "Bob" und "22:17" datengebundene Werte.
Der offensichtliche Weg, dies zu tun, um eine StackPanel
mit mehreren TextBlock
Kinder zu verwenden wäre, gebunden einige Daten von ihnen:
<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/>
Dies funktioniert, aber es ist hässlich. Das Programm soll in verschiedenen Sprachen lokalisiert sein, und separate Strings für "Der Benutzer" und "hat sich abgemeldet" ist ein Rezept für Lokalisierungs-Desaster.
Im Idealfall würde Ich mag so etwas tun:
<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>
So ist der Übersetzer einen vollständigen Satz The user <Bold>{0}</Bold> has logged off at <Bold>{1}</Bold>
sehen würde. Aber das geht natürlich nicht.
Dies muss ein häufiges Problem sein, was ist die richtige Lösung dafür?