【发布时间】:2020-08-03 16:56:56
【问题描述】:
我在处理子项目的本地化资源时遇到了问题。
主项目(称为 Z)使用子项目(称为 ProjectsModule),它有自己的资源。子项目有两个资源文件:
Strings.resx
Strings.pl-PL.resx
应用程序正在以波兰语作为当前 UI 文化的调试模式运行。
我收到以下异常:
System.Windows.Markup.XamlParseException: 'Operacja podawania wartości elementu
„System.Windows.Markup.StaticExtension” wywołała wyjątek., numer wiersza 24, pozycja 52.'
ArgumentException: Obiektu StaticExtension
„ProjectsModule.Resources.Strings.Projects_Config_Projects” nie można rozpoznać jako wyliczenia, pola
statycznego ani właściwości statycznej.
翻译过来是这样的:
"ProjectsModule.Resources.Strings.Projects_Config_Projects" cannot be recognized as enum, static field
or static property.
在加载窗口的 XAML 时会发生这种情况。所以我做了一个测试并修改了窗口的构造函数:
public ConfigurationWindow(ConfigurationWindowViewModel viewModel)
{
// *** DEBUG ***
System.Diagnostics.Debug.WriteLine(ProjectsModule.Resources.Strings.Projects_Config_Projects);
// *** END DEBUG ***
InitializeComponent();
this.viewModel = viewModel;
viewModel.Access = this;
this.DataContext = viewModel;
}
奇怪的是,我得到了以下输出:
Katalogi projektów
'Z.exe' (CLR v4.0.30319: Z.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xaml.resources\v4.0_4.0.0.0_pl_b77a5c561934e089\System.Xaml.resources.dll'. Module was built without symbols.
Exception thrown: 'System.ArgumentException' in System.Xaml.dll
Exception thrown: 'System.Xaml.XamlObjectWriterException' in System.Xaml.dll
Exception thrown: 'System.Windows.Markup.XamlParseException' in PresentationFramework.dll
Operacja podawania wartości elementu „System.Windows.Markup.StaticExtension” wywołała wyjątek., numer wiersza 24, pozycja 52.
“Katalogi projektów”正是我正在寻找的资源 - 所以它显然是可以访问的。但是,由于某种原因,XAML 解析器无法访问它(您可以在正确解析资源后看到前面提到的异常)。
我做错了什么?为什么 XAML 解析器无法使用明显可用的资源(此外,从正确翻译的附属程序集中读取)?
编辑:回应cmets
资源使用情况:
<Window ...
xmlns:properties="clr-namespace:ProjectsModule.Resources"
</Window>
...
<TextBlock DockPanel.Dock="Top" Margin="3" Style="{StaticResource Header}"
Text="{x:Static properties:Strings.Projects_Config_Projects}"></TextBlock>
文化基于操作系统文化。所以它是自动设置的。
【问题讨论】:
-
您能说明您在 XAML 中使用资源的位置以及设置区域性的位置吗?
-
@thatguy,已编辑帖子。
标签: c# wpf localization resources