问题标签 [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.

0 投票
2 回答
7927 浏览

wpf - XamlReader 生成 DataTemplate 的问题

我正在尝试在我的 WPF 项目中实现以下代码,以便为具有动态列的 DataGrid 动态生成 DataTemplates。我在这里找到了 StackOverflow 上的代码

但是,在 XamlReader.Load 代码中,我收到错误“无法从 'string' 转换为 'System.Xaml.XamlReader'。

我试图通过将代码更改为:

但我收到有关在字符串中传递无效字符的错误。

另外,我不确定如何将 TextBlock 传递给此代码。我以为我会创建一个 TextBlock 并将其作为 Type 参数传递,但我收到错误“无法从 'System.Windows.Controls.TextBlock' 转换为 'System.Type'

任何帮助表示赞赏。

0 投票
0 回答
147 浏览

.net - 如何监视 XamlWriter.Save() 操作的进度?

我有一个要保存并稍后加载的 FlowDocument。

我想我可以用 XamlWriter.Save() 和 XamlReader.Load() 做到这一点。

它有效,但需要很长时间。我想,所花费的时间就是所花费的时间,但是为了使 UI 更加简洁,我想提供一个显示保存进度的进度条。

但是如何监控 a 的进度XamlWriter.Save()

为了节省,一个想法是围绕目标流创建一个瘦包装类;然后它可以通过计算通过 Write() 方法发送的字节数来跟踪进度。这会起作用,但这是一个开放式的进展,因为我没有办法计算完成百分比。

我想我可以在阅读方面做类似的事情。

有人做过吗?跟踪 XamlWriter.Save() 进度的好方法是什么?

0 投票
1 回答
2960 浏览

c# - 绑定不适用于动态加载的 xaml

我正在XamlReader成功使用来加载一个 xaml 文件并创建一个FrameworkElement可以使用的文件。

我正在加载的 xaml 中包含绑定表达式,例如:

如果我将返回的 FrameworkElementXamlReader.Load()放入 WPF 窗口,则绑定一切正常。

但是,在这种情况下,我使用的是Laurent Bugnion 关于从 WPF/XAML 创建 PNG 的优秀文章。由于 的结果XamlReader.Load()通过 a 直接写入 PNG VisualBrush,因此似乎绕过了 WPF 调用绑定表达式的必要机制。

这让我相信实际的绑定并没有真正通过调用来调用XamlReader.Load(),或者它们没有工作是因为我不知道与没有可视化树有关的事情,直到你添加FrameworkElement到现有的视觉树或其他东西。

我可以做些什么来确保调用这些绑定吗?

提前谢谢了。

0 投票
1 回答
1326 浏览

c# - C# 从 XAML 文件创建模块目录

我在 prism 库的上下文中从 xaml 文件加载模块时遇到问题。模块的 xaml 如下所示:

到目前为止,解析器找到了这个 xaml,但没有找到 HelloWorldModule.dll。我在文档中找不到任何有用的东西,因为这些都是针对 Silverlight 的,但我的项目是 WFP 应用程序。

shell.exe 的相对路径是:

HelloWorldModule.dll 的路径是:

所以问题是“Ref”属性期望什么值?它是 HelloWorldModule.dll 的绝对路径吗?

第二个问题是 ModuleType 属性应该具有什么值:

类类型名称是否包含命名空间?

下一个问题是,HelloWorldModule.dll 是否与 Shell.exe 位于同一文件夹中?谢谢,于尔根

0 投票
1 回答
1596 浏览

wpf - 加载 generic.xaml 以合并资源字典时 XamlReader 抛出

尝试在代码中加载 generic.xaml,但会引发 XamlParseException。代码如下:

这个想法是在一个基本页面中合并一个资源字典。然后派生的页面可以使用例如,从它们的基类中使用样式、颜色、画笔等{StaticResource DarkBrush}

但是上面的代码抛出:

'',十六进制值 0x0C,是无效字符。第 1 行,位置 1。

generic.xaml 文件是在 VS2010 中以标准方式创建的。试图将 Build Action 设置为 Resource 但这也不起作用......

我从 Microsoft获得了代码示例。在那里它被用来加载一个页面。任何帮助将不胜感激。

0 投票
0 回答
1199 浏览

xaml - 如何解析具有自定义类的 xaml 文件,以获取所有对象的列表?

我浏览了大量类似的帖子,但在我的情况下似乎没有任何效果。我要做的就是加载一个 xaml 文件(位于其他程序集中),并遍历不同的元素/对象以检查某个属性值。我可以将它作为一个简单的 XML 文件来阅读,但是无法通过 xml 解析来捕获样式等内容。经过大量搜索,我尝试了以下两件事:

  1. x:Class=".."从 xaml 中删除了我还添加了assembly=XBase.UI这个(因为我原来的 xaml 没有这个,我读到动态加载时,你需要知道指定程序集)然后我将剩余的文件加载为 xml 流。然后我打电话给 XamlReader.Load(stream)

这似乎适用于发布查询的人,但我得到了例外

我尝试的第二件事是使用 XamlReader.Parse 并提供 ParserContext。这就是我所做的:

这也会引发异常:

我的原始 xaml 文件

请帮帮我。我什至不确定这是否是实现我想要的正确方法。如果除了 XmlDocument 的 GetElementsByTagName 之外,还有其他方式可以以更有意义的方式列出某种类型的所有元素,请告诉我。

提前致谢!

0 投票
1 回答
2620 浏览

wpf - XamlReader - 将多个 CLR 命名空间映射到单个 XML 命名空间

我有一个 WPF 项目,其中将AssemblyInfo.cs多个 CLR 命名空间分组到一个 XML 命名空间中:

在 XAML 中,它是这样使用的:

这在正常实例化 XAML 时效果很好,但现在我正在尝试使用XamlReader.

问题:我似乎无法将多个 CLR 命名空间映射到单个 XML 命名空间。似乎添加到的最后一个定义XamlTypeMapper是唯一持续存在的定义(例如,它破坏了以前的注册):

错误信息是:

如果全部将我的所有代码放在一个公共 CLR 命名空间下,一切正常,但不幸的是,这不是选项。是否有人将多个 CLR 命名空间映射到单个 XML 命名空间以动态加载 XAML 内容?

提前致谢!

0 投票
1 回答
946 浏览

xaml - 在 XamlReader.Load() 加载的文件中成功引用 ResourceDictionary

我正在构建一个通用的 WP7 程序集,它将显示我的应用程序的常见帮助/关于信息,每个应用程序程序集将指定一对 StackPanel,其中包含一些应用程序特定信息(以及调用 em Legal.xaml 和 WhatsNew.xaml)。

理想情况下,这些应用程序特定的 XAML 文件应该是纯文本形式(相对于在代码中实例化的东西),因此可以通过 HTTP 或作为嵌入式资源字符串加载。

加载 XAML 工作正常,直到我尝试将一些样式定义分解到另一个文件中,然后 XamlReader.Load() 失败并显示:“属性 AboutPageDocs/CommonStyles.xaml 值超出范围。[行:43 位置:45]”</p>

加载 Legal.xaml 时会发生该错误,当我们环顾四周时,我们会发现我试图加载现在包含自定义样式的 ResourceDictionary 的位置:

这是错误...如果只是复制并粘贴 StackPanel 代码(在运行时动态加载)并将其放入 UserControl... 一切正常。

不必在 Legal.xaml 和 WhatsNew.xaml 中定义我的内联样式...有没有办法让 XamlReader.Load() 属性查找 CommonStyles.xaml?

考虑到源路径不正确,我尝试通过两个程序集将 CommonStyles.xaml 的副本放置在不同的位置......以及尝试使用 pack:// uri 语法......到目前为止都无济于事.

我错过了什么?

0 投票
2 回答
847 浏览

c# - 命名并声明按钮的事件处理程序在运行时使用 C# XamlReader 创建

我正在使用 C# 和 WPF 开发一个项目,该项目动态创建包含一些文本、图像和按钮的网格布局。我创建了许多这样的网格,并将它们添加到堆栈面板中。我使用 XamlReader.Create() 函数创建了这个网格。这是整个代码,我很抱歉 Xaml 代码太长了

这对我来说效果很好,我认为这将是在运行时生成网格布局的正确方法,但是现在我需要命名按钮并定义一个事件处理程序,这就分崩离析了。当我尝试将按钮描述更改为

我得到一个 XAMLParse 异常。在阅读完此内容后,我不太确定您是否可以在运行时在 xaml 中声明这些内容。所以现在,我对如何做到这一点感到非常困惑。创建网格后,我不能只更改名称,因为它没有名称可供调用。有没有办法访问 UIElement 的子元素,即使它没有名字?或者有没有办法在运行时在 XAML 中声明名称而我只是做错了?

0 投票
2 回答
1973 浏览

wpf - 带有点击事件的 XamlReader

我在我的 WPF 项目中使用XamlReader 。它有效(我的参考

我当前的示例 Xaml 是这样的:

并像这样添加按钮的点击事件:

可以这样写xaml吗?