如何使用 Blend 在 WP7 中的不同视觉状态下设置不同的本地化字符串?
如何使用 Blend 在 WP7 中的不同视觉状态下设置不同的本地化字符串,而无需任何代码隐藏?
我可以在不同的视觉状态下设置不同的非本地化字符串(尽管它会闪烁)。这可行,但是本地化字符串怎么样?
如果我使用 Blend 中的数据绑定更改字符串,Blend 只会覆盖基本状态中的数据绑定,而不是我正在录制的实际状态。
编辑:
这就是我本地化字符串的方式:
我有一个名为AppPresources.resx
的资源文件。然后我会在代码中执行此操作:
// setting localized button title
mainButton.Content = AppResources.MainButtonText;
然后我有一个来自 MVVM Light Toolkit 的 GlobalViewModelLocator ,其中包含以下数据绑定属性。
private static AppResources _localizedStrings;
public AppResources LocalizedStrings
{
get
{
if (_localizedStrings == null)
{
_localizedStrings = new AppResources();
}
return _localizedStrings;
}
}
在 xaml 文件中:
<Button x:Name="mainButton" Content="{Binding LocalizedStrings.MainButtonText, Mode=OneWay, Source={StaticResource Locator}}" ... />
How do I set different localized strings in different visual states in WP7 using Blend without any code behind?
I can set different non-localized strings in different visual states (although it flickers). That works, but how about localized strings?
If I change the string using data binding in Blend, Blend just overrides the data binding in Base state and not the actual state where I'm recording.
EDIT:
This is how I localize my strings:
I have a resources file named AppPresources.resx
. Then I would do this in code:
// setting localized button title
mainButton.Content = AppResources.MainButtonText;
Then I have a GlobalViewModelLocator
from MVVM Light Toolkit with the following Property for Databinding.
private static AppResources _localizedStrings;
public AppResources LocalizedStrings
{
get
{
if (_localizedStrings == null)
{
_localizedStrings = new AppResources();
}
return _localizedStrings;
}
}
And in xaml file:
<Button x:Name="mainButton" Content="{Binding LocalizedStrings.MainButtonText, Mode=OneWay, Source={StaticResource Locator}}" ... />
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要做的事情与您已经在做的事情非常接近。首先,定义一个名为 Resources.cs 的类,其中包含以下内容。
这允许我们在 XAML 中创建资源文件的实例。为此,请打开 App.xaml 并添加以下内容
现在,当您需要在 XAML 中进行绑定时,您可以这样做:
您会注意到它在 Blend 中不起作用, 还。为了使其在 Expression Blend 中工作,
在 Properties 文件夹中添加以下文件:DesignTimeResources.xaml,并添加以下内容
现在,您在 Visual Studio 中按 F6 重新编译,瞧,您的本地化字符串可在 Expression Blend 中使用!
我的一个项目的真实示例:
What you need to do, is very close to what you're already doing. First, define a class named Resources.cs with following content
This allows us to create a instance of your Resource File in XAML. To do this, open App.xaml and add following
Now when you need to do bindings in your XAML, you do it like this:
What you'll notice is that it doesn't work in Blend, yet. To make it work in Expression Blend,
add the following file: DesignTimeResources.xaml in the Properties Folder, and add following content
Now, you press F6 in Visual Studio to recompile, and voila, your localized strings are available in Expression Blend!
A real-world example from one of my projects: