如果它们在另一个项目中,则无法使用resx文件

时间:2018-11-07 09:40:08

标签: c# .net wpf resx

我正在开发.NET中的WPF应用程序。我正在使用许多项目,因为它具有另一个项目的一些共享文件,例如用于本地化的资源文件。

如果resx文件和xaml文件位于同一项目( Project1.Properties.Resources.resx )中,则一切正常( Project1.AccountView.xaml

Working Tree

|-Project1
|         |-Properties
|         |          |-Resources.resx
|         |
|         |-AccountView.xaml
|
|
|-Project2
          | ...


AccountView.xaml

<UserControl ...
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:p="clr-namespace:Project1.Properties">
   ....
   <TextBox Controls:TextBoxHelper.Watermark="{x:Static p:Resources.Username}"/>
</UserControl>

这里的问题是我在另一个项目( Project2.Views.Account.Login.resx )中有资源文件,而我无法在AccountView.xaml中使用这些文件(请记住, xaml位于'Project1')中,方式与

Working Tree

|-Project1
|         |
|         |-AccountView.xaml
|
|
|-Project2
          |-Views
                |-Account
                        |-Login.resx


AccountView.xaml

<UserControl ...
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:p="clr-namespace:Project2.Views.Account">
    ...
    TextBox Controls:TextBoxHelper.Watermark="{x:Static Login.Username}"/>
</UserControl>

构建项目时的错误是:“ clr-namespace:Project2.Views.Account”命名空间中不存在“登录”名称

所有resx文件都具有“公共访问修饰符”。

有人知道我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

名称空间声明应包含程序集(项目)的名称:

xmlns:p="clr-namespace:Project2.Views.Account;assembly=Project2"
...
TextBox Controls:TextBoxHelper.Watermark="{x:Static p:Login.Username}"