WPF字符串转义 - 例外在创建控件模板被抛出

我试图从构造的代码控件模板后面。 直到最近我发现代码中串扔,因为转义字符的异常事情工作的罚款。 该错误信息是动态地从资源文件中检索构成。

唯一的例外是

类型的第一次机会异常'System.Windows.Markup.XamlParseException“发生在PresentationFramework.dll其他信息:名称不能以”@“字符,十六进制值0X40开始。 1号线位置537。

//In this case when exception is thrown, //string errorMessage = "Name cannot contain any of the following characters $ \" @ ; ^ | " public static ControlTemplate GetErrorTemplate(string errorMessage) { string xamlString = "<ControlTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" " + "xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" " + "xmlns:nicefx=\"clr-namespace:NiceFx.Interop.UIComponents;assembly=NiceFx\" " + "xmlns:wpfkit=\"http://schemas.microsoft.com/wpf/2008/toolkit\" >" + " <DockPanel LastChildFill=\"True\">" + "<TextBlock Foreground=\"White\" Background=\"Red\" FontSize=\"12\" Padding=\"2\" FontFamily=\"Trebuchet MS\" Margin=\"5,5,0,0\" TextWrapping=\"Wrap\" DockPanel.Dock=\"Bottom\" Text=\"" + errorMessage + "\"></TextBlock>" + "<AdornedElementPlaceholder />" + " </DockPanel>" + " </ControlTemplate>"; //EXCEPTION OCCURS IN THIS LINE ControlTemplate ct = (ControlTemplate)XamlReader.Load(XmlReader.Create( new StringReader(xamlString))); return ct; }

我如何逃离这个字符串? 我尝试了所有可能的方法,但我不能这样做。

--------------解决方案-------------

根据你的代码的注释,的errorMessage包含了" ,这将被插入(不逃逸的话)到你正在构建XAML。这"随后将充当收盘报价Text属性。 此时,下一个非空白字符解析器遇到会@ ,这不是一个XAML属性的名称的允许字符,因此它停止并且报告错误。

这涵盖了原因。 至于如何逃避它,你可以使用双引号的XML实体: &quot;请注意,您可能需要将此逃往多个字符在参数。

分类:WPF 时间:2015-03-16 人气:3
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.654 (s). 10 q(s)