我正在與Template10一個UWP應用程序,我現在有我的項目,這裏面的文件夾結構本地化:的ResourceLoader返回錯誤的語言內部視圖模型
默認應用程序語言爲en,而我目前的文化它是IT。 資源文件是正確的,通過應用程序的行爲是一致的,首先顯示意大利版本。
我在後面的View代碼中使用ResourceLoader類很好,但只要我在ViewModel中使用它,它總是返回英文本地化,即使它不存在(=空字符串,儘管它存在在意大利文件中)。
我在虛擬機內部使用它是因爲我創建了一個新的字符並給它一個默認名稱(「No name」),作爲用戶的佔位符,綁定了View中的名字。
這是我使用的代碼:
public class CharacterManagerViewModel : ViewModelBase
{
public Character Character { get; set; }
private ResourceLoader loader = new ResourceLoader();
public override async void OnNavigatedTo(object parameter, NavigationMode mode, IDictionary<string, object> state)
{
if (parameter == null)
{
//Creating a default empty character
Character = new Character();
Character.Name = loader.GetString("NewCharacterName");
}
else
{
//Loading from the Model
}
}
}
正如我所說的getString()方法,當前的文化是它,IT,但不知該框架忽略它。 我在做什麼錯?
如果我沒有弄錯,重要的是創建ResourceLoader時的當前文化,而不是當你調用GetString時的當前文化。您應該爲viewmodel使用顯式構造函數,並確保文化是正確的。如果這不起作用,你可以嘗試使用'ResourceLoader.GetForCurrentView()' –
來構建你的ResourceLoader。謝謝,但那是行不通的。 在發佈之前,我嘗試在OnNavigatedTo事件中移動ResourceLoader初始化,但它是一樣的。 我也試過你的建議,但那不起作用。它仍然使用默認語言。 –