Извлечь шаблон содержимого WPF из запущенного приложения WPF - PullRequest
3 голосов
/ 28 сентября 2010

Есть ли способ извлечь шаблон содержимого элемента управления WPF, который размещен в работающем приложении WPF?

Точно так же, как я могу копаться в визуальном дереве любого приложения WPF с помощью таких инструментов, как Snoop, я бы хотел иметь возможность извлечь шаблон содержимого.

Я уже спросил у Google. Но либо мои ключевые слова были полностью неверны, либо решение не могло быть найдено (в чем я сомневаюсь).

Может ли кто-нибудь дать мне подсказку?

Спасибо

Ответы [ 3 ]

1 голос
/ 10 декабря 2011

Что вы думаете об этом маленьком методе расширения?

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();
    }
}
0 голосов
/ 15 марта 2011

Этот инструмент позволяет просматривать запущенное дерево WPF. Пока вы не отлаживаете приложение одновременно с VS.

http://snoopwpf.codeplex.com/

0 голосов
/ 28 сентября 2010

Шаблон определен в Xaml, который заканчивается как Binary Xaml (Baml), что значительно усложнит, если не сделает невозможным, декомпиляцию шаблона в формате Xaml.

...