我正在尝试在Silverlight 4.0中编写多语言应用程序,并且我可以从SampleData xaml文件中的动态文本开始替换静态文本。以下是我有:动态设置TextBlock的文本绑定
我的数据库
<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>
我的用户
<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>
正如你所看到的,我有7种语言,我想处理。现在,这加载我的文字的英文版本就好了。今天我花了很多时间试图弄清楚如何改变我的代码中的绑定,以便在需要时将其交换出来(可以说当我通过下拉菜单更改语言时)。
任何帮助将是伟大的!
这是否允许我动态设置语言,而无需重新加载应用程序?在MSDN上的示例中,它将用户重定向到新页面 – 2010-03-30 13:33:46
Aha。现在我明白你的所作所为。不,使用静态资源时,用户将无法实时切换语言。如果这是你需要的,你应该使用数据绑定。但是你的代码示例对我来说仍然看起来过于复杂。我正在准备自己的代码示例。我会很快在这里发布。 – 2010-03-30 14:05:03
当你加载一个可以共享资源的孩子时,有没有什么办法让这个工作起作用?我试图把它放在一个类文件中,但是当我的UC在一个子文件夹中时它不想加载它。 – 2010-03-30 15:23:37