Je tente d'écrire une application multilingue dans Silverlight 4.0 et I au point où je peux commencer à remplacer mon texte statique par du texte dynamique provenant d'un fichier xaml SampleData. Voici ce que j'ai:Définir de manière dynamique la liaison de texte de TextBlock
Ma base de données
<SampleData:something xmlns:SampleData="clr-namespace:Expression.Blend.SampleData.MyDatabase" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<SampleData:something.mysystemCollection>
<SampleData:mysystem ID="1" English="Menu" German="Menü" French="Menu" Spanish="Menú" Swedish="Meny" Italian="Menu" Dutch="Menu" />
</SampleData:something.mysystemCollection>
</SampleData:something>
Mon UserControl
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
x:Class="Something.MyUC" d:DesignWidth="1000" d:DesignHeight="600">
<Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource MyDatabase}}">
<Grid Height="50" Margin="8,20,8,0" VerticalAlignment="Top" d:DataContext="{Binding mysystemCollection[1]}" x:Name="gTitle">
<TextBlock x:Name="Title" Text="{Binding English}" TextWrapping="Wrap" Foreground="#FF00A33D" TextAlignment="Center" FontSize="22"/>
</Grid>
</Grid>
</UserControl>
Comme vous pouvez le voir, je 7 langues que je veux traiter. En ce moment, cela charge la version anglaise de mon texte très bien. J'ai passé la plus grande partie de la journée à essayer de trouver comment changer la liaison dans mon code pour l'échanger quand j'en avais besoin (disons quand je change de langue via une liste déroulante).
Toute aide serait géniale!
Est-ce que cela me permettra de définir la langue de façon dynamique sans devoir recharger l'application? Dans les exemples sur MSDN redirige l'utilisateur vers une nouvelle page –
Aha. Maintenant, je vois ce que vous êtes après. Non, l'utilisateur ne pourra pas changer de langue à la volée lors de l'utilisation de ressources statiques. Si c'est ce dont vous avez besoin, vous devriez probablement aller avec la liaison de données. Mais votre exemple de code me semble toujours trop compliqué. Je prépare un exemple de code de mon cru. Je vais le poster ici bientôt. –
Existe-t-il un moyen pour que cela fonctionne lorsque vous chargez un enfant, il peut partager les ressources? J'ai essayé de mettre ceci dans un dossier de classe mais il ne veut pas le charger quand mon UC est dans un sous-dossier –