gpt4 book ai didi

mvvm - 如何使用 Blend 在 WP7 中以不同的视觉状态设置不同的本地化字符串?

转载 作者:行者123 更新时间:2023-12-04 15:26:59 26 4
gpt4 key购买 nike

如何在没有任何代码的情况下使用 Blend 在 WP7 中以不同的视觉状态设置不同的本地化字符串?

我可以在不同的视觉状态下设置不同的非本地化字符串(尽管它会闪烁)。那行得通,但是本地化的字符串呢?

如果我在 Blend 中使用数据绑定(bind)更改字符串,Blend 只会覆盖 Base 状态中的数据绑定(bind),而不是我正在录制的实际状态。

编辑:

这就是我本地化字符串的方式:

我有一个名为 AppPresources.resx 的资源文件.然后我会在代码中这样做:

    // setting localized button title
mainButton.Content = AppResources.MainButtonText;

然后我有一个 GlobalViewModelLocator来自具有以下数据绑定(bind)属性的 MVVM Light Toolkit。
    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}}" ... />

最佳答案

您需要做的事情与您已经在做的事情非常接近。首先,定义一个名为 的类资源.cs 有以下内容

public class Resources
{
private static AppResources resources = new AppResources();

public AppResources LocalizedStrings
{
get
{
return resources;
}
}
}

这允许我们在 XAML 中创建资源文件的实例。为此,请打开 应用程序.xaml 并添加以下内容
<Application.Resources>
<local:Resources x:Key="Resources" />
</Application.Resources>

现在,当您需要在 XAML 中进行绑定(bind)时,您可以这样做:
<Button Content="{Binding LocalizedStrings.MainButtonText,
Source={StaticResource Resources}}" />

您会注意到它在 Blend 中不起作用, .为了让它在 Expression Blend 中工作,
添加以下文件: DesignTimeResources.xaml 在属性文件夹中,并添加以下内容
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:YourNameSpace">
<local:Resources x:Key="Resources" />
</ResourceDictionary>

现在,您在 Visual Studio 中按 F6 重新编译,瞧,您的本地化字符串在 Expression Blend 中可用!

我的一个项目中的一个真实示例:
  • AppResources.cs
  • DesignTimeResources.xaml
  • App.xaml
  • 关于mvvm - 如何使用 Blend 在 WP7 中以不同的视觉状态设置不同的本地化字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5170888/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com