gpt4 book ai didi

wpf - 我如何从代码中的模板对象获取实际的 XAML(或者我可以)?

转载 作者:行者123 更新时间:2023-12-02 07:47:51 26 4
gpt4 key购买 nike

不确定这是否可行,但如果我有一个模板对象(传递给 OnApplyTemplate 覆盖),有什么方法可以检查构成它的 XAML 的字符串表示形式吗?我在内部知道当模板的 XAML 被编译时,它实际上被转换为 BAML,而且我知道当代码到达覆盖时,它既不是因为它已经重新水化为实际对象,这就是我问的原因。

实际上,如果您可以从模板对象转到 XAML,那么理论上您不能从任何 WPF 对象转到它的 XAML 表示形式吗?然而,我会满足于前者的模板。

这是 .NET 4.0 中的 C#,而不是 Silverlight FWIW。

中号

最佳答案

旧的 XamlWriter 类大部分时间都有效。 System.Xaml 中的新 XAML 类在尝试将 ControlTemplate 序列化为 XAML 时出于某种原因引发错误。我建议您避免在生产代码中依赖任何 XAML 编写...

var template = this.FindResource("MyTemplate") as ControlTemplate;

// The new XamlServices class throws an error.
//string xaml = System.Xaml.XamlServices.Save(template);

// The old XamlWriter from the Markup namespace works (usually)
string xaml = System.Windows.Markup.XamlWriter.Save(template);

// Format the XAML so that it's readable.
string indentedXaml = XElement.Parse(xaml).ToString();

Console.WriteLine(indentedXaml);

关于wpf - 我如何从代码中的模板对象获取实际的 XAML(或者我可以)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5671972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com