I am using C# markup for the UI development. I declared two buttons to enable user to select Language. The markup is as follows:
FuncConverter<string, Color> stringToColorConverter = new FuncConverter<string, Color>(language => language == "English" ? Color.Blue : Color.Gray);
new Button{Text="English"}.Bind(Button.BackgroundColorProperty,nameof(vm.SelectedLanguage),BindingMode.TwoWay,converter:stringToColorConverter).BindCommand(nameof(vm.ChangeLanguageCommand),"English"),
new Button{Text="हिंदी"}.Bind(Button.BackgroundColorProperty,nameof(vm.SelectedLanguage),BindingMode.TwoWay,converter:stringToColorConverter).BindCommand(nameof(vm.ChangeLanguageCommand), parameterPath:("हिंदी"))
The code in the ViewModel:
public ReactiveCommand<string,string> ChangeLanguageCommand { get; set; }
ChangeLanguageCommand = ReactiveCommand.CreateFromTask<string,string>(async(selectedLanguage)=>await ChangeLanguage(selectedLanguage));
public async Task<string> ChangeLanguage(string selectedLanguage)
{
CultureInfo language = CultureInfo.GetCultures(CultureTypes.NeutralCultures).ToList().First(element => element.EnglishName.Contains(selectedLanguage));
Thread.CurrentThread.CurrentUICulture = language;
AppResources.Culture = language;
return language.EnglishName;
}
The button for English language does not invoke command. Whereas the button for Hindi language invoke command but the passed parameter is null. I am new to C# markup and there are very few resources on C# markup. Thanks in advance for any help.