我正在嘗試在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