我正在开发.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文件都具有“公共访问修饰符”。
有人知道我该如何解决这个问题?
答案 0 :(得分:1)
名称空间声明应包含程序集(项目)的名称:
xmlns:p="clr-namespace:Project2.Views.Account;assembly=Project2"
...
TextBox Controls:TextBoxHelper.Watermark="{x:Static p:Login.Username}"