问题标签 [xamlreader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - FlowDocument 和 XamlReader x:Class
在我的 MainWindow 中,我将FlowDocumentScrollViewer
其属性绑定Document
到FlowDocument
我的MainViewModel中。
该文档是从远程计算机上的外部 xaml 文件存储加载的。目前,我可以通过正确加载此文档XamlReader.Load(xamlfile)
并将其显示在FlowDocumentScrollViewer
. 到目前为止,一切都很好。
当我尝试在此文档中添加超链接时出现问题。因为要处理RequestNavigate
事件,我需要一个x:Class
. 暂时这个类需要是我MainWindow
的,因为事件是在代码隐藏中处理的。显然,当我添加我的外部文档时,我在解析的那一刻x:Class="Ugrader.MainWindow"
得到了一个可爱的结果。'System.Windows.Markup.XamlParseException'
那么有没有办法解决这个问题?
这是我的一段代码
主窗口.xaml
主视图模型.cs
外部 FlowDocument
顺便说一句,有没有办法处理这个解析异常(如果外部文件损坏),因为即使在这个 try/catch 块中,这也会停止我的程序。
提前谢谢你,
巴斯蒂安。
c# - 从 XAML 加载 ResourceDictionary 也会将文件加载到内存中
我有一个 XAML 文件,我使用它作为 ResourceDictionary 加载它
在那个 XAML 里面,我有一个 ImageBrush。当我阅读字典时,MyApplication.vshost.exe 现在正在使用构成 ImageBrush 的图像文件。即 ImageBrush 的 Source 属性中的文件。我需要删除该文件,但它给出了一个错误,因为该文件正在被另一个进程使用。我的问题是如何正确执行此操作,以便以后可以自由删除文件。
wpf - 使用 XamlReader.Parse 创建的控件不继承样式
在我的应用程序中,用户可以输入 HTML,然后将其转换为 XAML。然后我使用该方法解析 XAMLXamlReader.Parse
并将其添加到FlowDocument
.
例如,假设我有一个段落的 XAML 存储在一个字符串中,然后我解析它并将其添加到FlowDocument
如下所示:
请注意,该段落具有指定的样式。该样式在FlowDocument
's 资源中定义。
你可以看到我定义了两种样式。第一个是隐式样式,第二个使用BasedOn
属性扩展第一个。当我动态添加它Paragraph
时,FlowDocument
它确实选择了“大”风格。但是,有一个警告,它不会拾取隐式样式的红色前景色。我怎样才能让它同时拾取?
当我解析 XAML 时,这似乎只是一个问题。如果我只是实例化一个新Paragraph
对象并将其添加到 中FlowDocument
,它确实会同时采用两种样式。
asp.net-mvc - Transform image using XAML and generate new image
I have a ASP.NET MVC website.
I have a "flat" PNG image in my project that I need to transform. I think that I can use XAML for it.
Steps :
- Create a XAML UserControl (or other) that transform the image adding a 3d effect for example
- Use a XamlReader in my website controller, passing my flat image in parameter
- Generate the new image file with my 3d effect
Is it possible to do what I need ?
Are the steps correct ?
I didn't find a good tutorial to do it, so ifyou have one, thanks in advance.
c# - 使用 XamlReader 和 XamlWriter 时将内容从一个 FlowDocument 插入另一个
我将 FlowDocument 与 BlockUIContainer 和 InlineUIContainer 元素一起使用,这些元素包含(或作为基类)一些自定义块 - SVG、数学公式等。因此,使用 Selection.Load(stream, DataFormats.XamlPackage) 将不起作用,因为序列化将删除 * UIContainers,除非 Child 属性是 Microsoft 参考源中可用的图像:
在这种情况下,唯一的选择是使用完美工作的 XamlWriter.Save 和 XamlReader.Load,序列化和反序列化 FlowDocument 的所有必需属性和对象,但必须手动实现 Copy+Paste 作为 Copy+ 的默认实现粘贴使用 Selection.Load/Save。
复制/粘贴非常重要,因为它还用于处理在 RichTextBox 控件中或之间拖动元素 - 这是无需自定义拖动代码即可操作对象的唯一方法。
这就是为什么我希望使用 FlowDocument 序列化来实现复制/粘贴,但不幸的是它存在一些问题:
- 在当前解决方案中,需要对整个 FlowDocument 对象进行序列化/反序列化。就性能而言,这应该不是问题,但我需要存储需要从中粘贴哪些选择范围的信息(CustomRichTextBoxTag 类)。
显然,对象不能从一个文档中删除并添加到另一个文档(我最近发现的一个死胡同):“InlineCollection”元素不能插入到树中,因为它已经是树的子节点。
我考虑在所有需要移动到另一个文档的元素中使用反射来设置 FrameworkContentElement._parent,但这是最后的手段 hackish 和肮脏的解决方案:
从理论上讲,我只能复制所需的对象:(可选)在选择开始时使用文本部分运行,中间的所有段落和内联以及(可能)在最后部分运行,将这些封装在自定义类中并使用序列化/反序列化XamlReader/XamlWriter。
- 另一个我没有想到的解决方案。
这是自定义的 RichTextBox 控件实现,其中包含部分工作的自定义复制/粘贴代码:
还有一个问题 - 是否存在使用 XamlReader 和 XamlWriter 为 FlowDocument 自定义复制+粘贴代码的现有解决方案?如何修复上面的代码,使其不会抱怨不同的 FlowDocument 对象或解决此限制?
编辑:作为一个实验,我实现了 2),以便可以将对象从一个 FlowDocument 移动到另一个。上面的代码已更新 - 所有对“字段”变量的引用。
c# - 动态加载 ResourceDictionnary
我有一些问题。我希望我的应用程序在 app.xaml.cs 中动态加载 ResourceDictonnary。
这是我目前的代码:
问题是,如何从 xaml 文件中获取 ResourceDictionnary 流?我不想用 exe 复制 xaml 文件。它的构建操作设置为 Page,我想加载它。
你能告诉我该怎么做吗?
谢谢 !
c# - 衡量 xaml 加载/解析性能的最佳方法是什么
我在整个应用程序中使用了一些 xaml 文件。我希望编写单元测试来测试每个 xaml 文件的性能,换句话说,加载/解析和渲染其中一个窗口(使用某些 xaml 文件)需要多长时间。
我发现 XamlReader 类(我认为)正是这样做的。但是,我知道Application.LoadComponent()
(在 System.Windows 中)也可以用于类似的事情。如果您必须测试解析整个 xaml 文档需要多长时间,您会使用什么?
XamlReader.Load()
/XamlReader.Parse()
或Application.LoadComponent()
,或完全不同的东西?在这种情况下,最好的行动方案是什么?
此外,由于我在以编程方式进行性能测试方面经验不足,因此测量加载时间的好方法是什么,System.Diagnostics 中的秒表类是否合适?
c# - XamlReader.Read 或 XamlReader.Parse 如何实例化类型以构建 wpf 树?
我知道对于具有指定clr-namespace:
和assembly=
标记的控件,XamlReader 只是在指定程序集中查找该类型。
但是默认命名空间中的默认 WPF 控件xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
呢?
我正在尝试获取 XElement 树中每个元素的类型,但我不知道在未指定程序集时如何找到它?
例如,以下所有示例都返回 null:
Type.GetType("Grid")
typeof(Control).Assembly.GetType("Grid")
Assembly.GetAssembly(typeof(Control)).GetType("Grid")
帮助?
windows - 尝试定位字符串时出现 Windows.UI.Xaml.Markup.XamlParseException
我正在按照本教程创建我的第一个 Windows 应用程序。我在第 3 步,如果我尝试运行应用程序,我会在这里得到一个 Windows.UI.Xaml.Markup.XamlParseException
由于我什至没有更改指南中的名称,这是怎么回事?
编辑 1:完整的错误信息
c# - 如何在 C# 中使用内联 XAML 在代码隐藏中轻松创建自定义对象
我正在尝试使用 XAML 解析器引用 LinearGradientBrush,但它无法识别对象并且出现异常:
“无法创建未知类型 'LinearGradientBrush'”
是否可以在运行时识别这种类型?
这是我正在使用的代码:
我真的不喜欢在 XAML 中编程(特别是因为我所做的大部分工作都是依赖于运行时程序流程的设计,但是有些对象在其中制作原型比 C# 更容易,我更希望能够使用这种方法...
我读过我应该在某处包含这样的一行,但老实说,我不明白为什么,如果我把它放在所有“使用”下似乎不起作用
无论如何,在 C# 代码文件中运行时解析 XAML 的任何帮助将不胜感激。