C# WPF:解析几何图形忽略语言
我将ResourceDictionary嵌入到项目中的资源文件中。这本词典包含一系列几何图形C# WPF:解析几何图形忽略语言,c#,wpf,localization,C#,Wpf,Localization,我将ResourceDictionary嵌入到项目中的资源文件中。这本词典包含一系列几何图形 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Geometry x:Key="pin">M20.5
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Geometry x:Key="pin">M20.5,15L11.5,15C10.396,15 9.5,15.896 9.5,17 9.5,18.104 10.396,19 11.5,19L20.5,19C21.604,19 22.5,18.104 22.5,17 22.5,15.896 21.604,15 20.5,15z M13.583,8L12.5,14 19.5,14 18.416,8 13.583,8z M16,29L17.5,20 14.5,20 16,29z M13,7L19,7C19.828,7 20.5,6.328 20.5,5.5 20.5,4.672 19.828,4 19,4L13,4C12.171,4 11.5,4.672 11.5,5.5 11.5,6.328 12.171,7 13,7z</Geometry>
<Geometry ...
</ResourceDictionary>
当我检查字典条目的值时,无论我的电脑使用的是英语还是法语文化,我都会得到不同的结果
当我的电脑使用英语时,值为:
M20.5,15L11.5,15C10.396,15 9.5,1...
M20,5;15L11,5;15C10,396;15 9,5;1...
但如果我的电脑使用法语,则值为:
M20.5,15L11.5,15C10.396,15 9.5,1...
M20,5;15L11,5;15C10,396;15 9,5;1...
然后当我尝试使用Geometry.Parse时,它断言因为字符串没有使用标准的几何术语
foreach (DictionaryEntry entry in dictionary)
{
var Data = Geometry.Parse(entry.Value.ToString()); <--- ASSERTS HERE
...
我最终在字典条目中得到了相同的结果。字符仍在转换。就像parsercontext被忽略一样
我尝试使用xml:lang=“en-US”在ResourceDictionary的根目录中强制使用该语言,我尝试在几何体项中强制使用该语言。我无法接收未更改的字符串。字符最终被替换
结论:我唯一能做的就是替换“;”带“,”和“,”但这只适用于法国文化。这不是我正在寻找的解决方案
有谁能帮助我理解如何在不受文化欺负的情况下正确加载资源吗?这看起来像是
几何中的一个bug
Parse
和ToString
应该是对称的
作为一种解决方法,您可以在将资源转换为字符串时使用不变区域性:
foreach (DictionaryEntry entry in dictionary)
{
string valueAsString = ((Geometry)entry.Value).ToString(CultureInfo.InvariantCulture);
var Data = Geometry.Parse(valueAsString);
...
也就是说,我不知道为什么需要执行ToString
和Parse
。。。您不能将资源强制转换为几何体吗
foreach (DictionaryEntry entry in dictionary)
{
var Data = (Geometry)entry.Data;
...
我报告了这个问题,但我怀疑它是否会被修复…你让我开心。我不知道在保留当前文化的同时,将字符串转换为几何体是可行的。非常感谢@BriocheBro您不能将字符串强制转换为
几何体
,但参考资料中的对象不是字符串,它已经是几何体
的实例。