Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
提取正在运行的WPF应用程序的WPF内容模板_Wpf_Templates_Runtime_Extract - Fatal编程技术网

提取正在运行的WPF应用程序的WPF内容模板

提取正在运行的WPF应用程序的WPF内容模板,wpf,templates,runtime,extract,Wpf,Templates,Runtime,Extract,是否有一种方法可以提取承载在运行的WPF应用程序中的WPF控件的内容模板 就像我能够通过Snoop之类的工具挖掘任何WPF应用程序的可视化树一样,我希望能够提取内容模板 我已经问过谷歌了。但要么我的关键词完全错了,要么可能没有解决办法(我怀疑) 谁能给我一个提示吗 谢谢该模板是在Xaml中定义的,最终被定义为二进制Xaml(Baml),这将使反编译Xaml格式的模板变得更加困难(如果不是不可能的话)。此工具允许您查看正在运行的WPF树。只要您不同时使用VS调试应用程序 你觉得这种小扩展方法怎么样

是否有一种方法可以提取承载在运行的WPF应用程序中的WPF控件的内容模板

就像我能够通过Snoop之类的工具挖掘任何WPF应用程序的可视化树一样,我希望能够提取内容模板

我已经问过谷歌了。但要么我的关键词完全错了,要么可能没有解决办法(我怀疑)

谁能给我一个提示吗


谢谢

该模板是在Xaml中定义的,最终被定义为二进制Xaml(Baml),这将使反编译Xaml格式的模板变得更加困难(如果不是不可能的话)。

此工具允许您查看正在运行的WPF树。只要您不同时使用VS调试应用程序


你觉得这种小扩展方法怎么样

using XamlWriter = System.Windows.Markup.XamlWriter;
public static class FrameworkTemplateExtensions
{
    /// <summary>
    /// Returns properly-indented XAML representing the given template.
    /// </summary>
    public static string AsXaml(this FrameworkTemplate template)
    {
        if (template == null)
        {
            return null;
        }
        XmlWriterSettings xmlSettings = new XmlWriterSettings();
        xmlSettings.Indent = true;
        StringBuilder builder = new StringBuilder();
        using (XmlWriter writer = XmlWriter.Create(builder, xmlSettings))
        {
            XamlWriter.Save(template, writer);
        }
        return builder.ToString();
    }
}
使用XamlWriter=System.Windows.Markup.XamlWriter;
公共静态类FrameworkTemplateExtensions
{
/// 
///返回表示给定模板的正确缩进XAML。
/// 
公共静态字符串AsXaml(此框架模板)
{
如果(模板==null)
{
返回null;
}
XmlWriterSettings=新的XmlWriterSettings();
xmlSettings.Indent=true;
StringBuilder=新的StringBuilder();
使用(XmlWriter=XmlWriter.Create(生成器,xmlSettings))
{
保存(模板,编写器);
}
返回builder.ToString();
}
}

Mhm。。没有料到将模板作为反射器是不可能的,例如,从BAML解析普通XAML没有太多问题。