【发布时间】:2017-09-01 06:07:48
【问题描述】:
我对 DynamicResource 和 MergedDictionary 有疑问。 我有一个可以用不同语言(英语、西班牙语、德语)显示的软件,而且我有很多 ResourceDictionaries。 我举一个字典的例子,叫做“Documentation.xaml”:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=mscorlib">
<system:String x:Key="ProductNumber">Product Number</system:String>
<system:String x:Key="Notes">Notes</system:String>
<system:String x:Key="Logo">Logo</system:String>
<system:String x:Key="InspectionTask">Inspection task</system:String>
<system:String x:Key="ProductDescription">Product Description</system:String>
</ResourceDictionary>
这是我的“默认”资源字典。 我还有另外两个字典,分别称为“Documentation.de-DE.xaml”和“Documentation-es-ES.xaml”,分别用于德语和英语。 它们与默认字典几乎相同。唯一的区别是显示的字符串。
现在我的问题是: 当我通过“DynamicResource”访问资源时,我会从活动字典中获得结果。 (例如:我得到西班牙语中“ProductDescription”的“产品描述”。)如果字典中的条目可用,一切正常。 当一个条目不可用时会出现问题。 假设以下情况: 我正在以西班牙语运行该软件并想将其更改为德语,但字典中的一个条目不可用,那么该软件没有使用它的默认条目。我仍然有西班牙语词典中的值。
在我看来,DynamicResource 在这种情况下会崩溃并且不会改变。我没有证据证明它真的崩溃了。我唯一的事实是,如果条目不存在,文本框不会改变! 有没有办法处理这个崩溃? (如果是一个)
我希望我有你需要的所有信息。如果没有请告诉我
【问题讨论】:
-
它实际上是“崩溃”还是 TextBlock 没有改变?
-
@mm8 就像我说的,这只是我的意见。不知道会不会崩溃我唯一知道的是,它不会改变。如果该条目可用,它可以正常工作并更改文本框。我还编辑了问题以使其清楚。
标签: c# wpf xaml dictionary