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

Cannot use resx files if their are in another project

我正在 .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>

构建项目时的错误是:'Login' name does not exist in 'clr-namespace:Project2.Views.Account' namespace

所有 resx 文件都有 Public 访问修饰符。

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

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

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