Windows Workflow Foundation 4包含一个WPF属性网格,类似于可用于Winforms的网格。顶部的工具栏有一个CLEAR按钮,而不是Visual Studio显示的X.此控件具有在运行时不为空的ControlTemplate属性。该模板使用工具栏按钮的各种字形。逆向工程ControlTemplate
是否有任何工具或技术可以让我提取此模板?我想检查并修改XAML以重新设置工具栏(主要是更改按钮标签)。
我有编程访问模板对象,但我不知道如何序列化到XAML。
Windows Workflow Foundation 4包含一个WPF属性网格,类似于可用于Winforms的网格。顶部的工具栏有一个CLEAR按钮,而不是Visual Studio显示的X.此控件具有在运行时不为空的ControlTemplate属性。该模板使用工具栏按钮的各种字形。逆向工程ControlTemplate
是否有任何工具或技术可以让我提取此模板?我想检查并修改XAML以重新设置工具栏(主要是更改按钮标签)。
我有编程访问模板对象,但我不知道如何序列化到XAML。
您是否尝试过简单地使用XamlWriter.Save
?
例如
var template = control.Template;
using (var stream = new FileStream("template.xaml", FileMode.Create))
{
using (var writer = XmlWriter.Create(stream, new XmlWriterSettings() { Indent = true }))
{
XamlWriter.Save(template, writer);
}
}
非常好的尝试。不幸的是它与''不能序列化非公开类型''System.Activities.Presentation.Internal.PropertyEditing.KeyboardEnabledRadioButton'.' –
嗯,太糟糕了:( –
纠正我,如果我错了,但我认为这告诉我,模板是以编程方式创建的,因为它*不能被表达为XAML。我想在某些时候我必须编写一个忽略保护级别的XamlWriter实现,但是抓取模板并不是我经常做的事情:)。 –
你有没有试过红门的反射器?当然,如果程序集被混淆了,它可能不会有太大的帮助。
不是答案,但你可以[snoop](http://snoopwpf.codeplex.com/)它。 – Will