Xamarin-使用绑定和翻译

Xamarin-使用绑定和翻译,xamarin,binding,translation,Xamarin,Binding,Translation,我试着创造这样的东西: <Label Text="{Binding oResult.hi, StringFormat='Hallo: {0}'}" /> 而且效果很好!但是我希望字符串“Hallo”应该从resx文件中删除 像这样: <Entry Placeholder="{i18n:TranslateExtension Text=password}" IsPassword="true" /> 同时,我会将两者结合起来 谢谢大家! 您可以通过简单的标记扩展名和

我试着创造这样的东西:

<Label Text="{Binding oResult.hi, StringFormat='Hallo: {0}'}" />

而且效果很好!但是我希望字符串“Hallo”应该从resx文件中删除

像这样:

<Entry Placeholder="{i18n:TranslateExtension Text=password}" IsPassword="true" />

同时,我会将两者结合起来


谢谢大家!

您可以通过简单的标记扩展名和resx文件中的字符串来实现这一点

Xaml扩展:

使用系统;
使用Xamarin.Forms.Xaml;
使用Xamarin.Forms;
利用系统资源;
名称空间i18n
{
[内容属性(“密钥”)]
公共类TranslateExtension:IMarkupExtension
{
公共字符串密钥{get;set;}
静态ResourceManager ResourceManagerInstance;
#区域IMarkupExtension实现
公共静态void Init(ResourceManager r){
ResourceManagerInstance=r;
}
公共对象ProviderValue(IServiceProvider服务提供者)
{
if(ResourceManagerInstance==null)
{
抛出新的InvalidOperationException(“在App.cs中调用TranslateExtension.Init(ResourceManager));
}
返回ResourceManagerInstance.GetString(this.Key);
}
#端区
}
}
示例App.cs:

使用Xamarin.Forms;
使用i18n;
命名空间资源本地化标记
{
公共类应用程序:应用程序
{
公共应用程序()
{
TranslateExtension.Init(本地化.Strings.ResourceManager);
MainPage=新导航页面(newmypage());
}
}
}
示例Xaml: