Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:解析几何图形忽略语言_C#_Wpf_Localization - Fatal编程技术网

C# WPF:解析几何图形忽略语言

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嵌入到项目中的资源文件中。这本词典包含一系列几何图形

<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您不能将字符串强制转换为
几何体
,但参考资料中的对象不是字符串,它已经是
几何体
的实例。