WP8多个项目通过Windows Phone类库共享代码,但无法共享AppResources.resx

时间:2014-01-16 17:03:49

标签: c# windows-phone-7 windows-phone-8 localization

假设我有3个项目:LibClassProjProj1Proj2在Windows手机中由c#开发。 Proj1Proj2分享LibClassProj中的代码。它工作正常。现在的问题是,我无法从LibClassProjProj1的xaml获取Proj2的AppResources.resx中的字符串。

例如,这是来自LibClassProj的xaml的一部分。

SelectableButtonText="{
                    Binding Path=LocalizedResources.strTestButtonTitleClose, 
                    Source={StaticResource LocalizedStrings}}"

当我将strTestButtonTitleClose放入LibClassProj的AppResources.resx文件中时,我无法从Proj1Proj2获取此字符串(这意味着设置Proj1或{{1作为StartUp项目)。如果我把它放在Proj2的AppResources.resx中,当我选择Proj1作为StartUp项目时,我可以得到它。与Proj1相同。

任何人都知道如何将字符串仅放在Proj2的AppResources.resx中,我可以从其他项目访问它吗?谢谢。

1 个答案:

答案 0 :(得分:2)

您需要从每个项目的App.xaml中引用该共享资源:

<Application
    ...
    xmlns:lib="clr-namespace:YourApp.LibClassProj;assembly=YourApp.LibClassProj">

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
               ...
            </ResourceDictionary.MergedDictionaries>

            <lib:LocalizedStrings x:Key="LocalizedStrings"/>
        </ResourceDictionary>
    </Application.Resources>
</Application>

然后你应该能够使用你在Proj1和Proj2中提到的字符串:

<TextBlock Text="{Binding Source={StaticResource LocalizedStrings}, Path=LocalizedResources.strTestButtonTitleClose}"/>