Я разрабатываю приложение WPF в .NET. Я использую много проектов, потому что у него есть общие файлы другого проекта, такие как файлы ресурсов для локализации.

Если файл 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
Iker Ocio Zuazo 7 Ноя 2018 в 12:40

1 ответ

Лучший ответ

Объявление пространства имен должно включать имя сборки (проекта):

xmlns:p="clr-namespace:Project2.Views.Account;assembly=Project2"
...
TextBox Controls:TextBoxHelper.Watermark="{x:Static p:Login.Username}"
1
mm8 7 Ноя 2018 в 12:41