我正在使用资源字典进行本地化,我在 wpf 中有以下代码:
<Window x:Class="RWIS_WPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="RWIS" Height="500" Width="800" MinHeight="500" MinWidth="800">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Localizations/Dictionary.EN.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
我的问题是,我想使用本地化窗口标题{StaticResource mW_screen1}
<Window x:Class="RWIS_WPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="{StaticResource IT_IS_NOT_WORKING}" Height="500" Width="800"
MinHeight="500" MinWidth="800">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Localizations/Dictionary.EN.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<TextBlock Text="{StaticResource IT_IS_WORKING}"></TextBlock>
但它不起作用,因为资源是在标题调用它之后定义的。当我尝试运行它时它会给我错误
发生 System.Windows.Markup.XamlParseException 消息='提供
“System.Windows.StaticResourceExtension”上的值引发异常。
行号“6”和行位置“9”。
它适用于添加资源后的标题、文本
我尝试用 C# 代码调用它,但没有成功。
我知道有一个选择:
<Window.Title></Window.Title>
但没有像文本或值这样的参数,我可以把它放在哪里Text="{StaticResource IT_IS_WORKING}"
StaticResource
在将 BAML(编译的 XAML)加载到内存时应用,并且它parses XAML from top to bottom
由于您的资源尚未创建,因此在加载 XAML 时会引发错误。
相反,尝试使用DynamicResource
你可以说这是延迟加载的版本。它将表达式对象分配给目标属性。这会推迟查找资源,直到运行时需要为止。
阅读本文以获得进一步的说明 -静态资源 VS 动态资源 https://stackoverflow.com/a/200875/632337.
<Window Title="{DynamicResource IT_WILL_WORK}"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)