我想在我的WPF项目中实现此控件但我不知道该控件的名称是什么? 有没有人以前做过这个?请告诉我有关此控件的信息。 感谢
答案 0 :(得分:0)
你的意思是工具栏? 它不存在,你必须自己实现它,为你想要的每种视图创建不同的datatemplate,然后点击它们之间切换
答案 1 :(得分:0)
如果您想创建这类视图,可以为listview check out here
创建自定义视图虽然如果你不想知道控件的名称。然后使用Snoop为您生成WPF可视化树,然后您可以看到正在呈现控件的名称。在控件上。
或者另一种方式使用VisualTreeHelper.GetChild方法
// Enumerate all the descendants of the visual object.
static public void EnumVisual(Visual myVisual)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++)
{
// Retrieve child visual at specified index value.
Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);
// Do processing of the child visual object.
// Enumerate children of the child visual object.
EnumVisual(childVisual);
}
}
答案 2 :(得分:0)
第一级查询将确定控件是否实际上是WPF控件。为此,您可以使用WPF Snoop Utility。如果该实用程序检测到WPF控件,它将生成一个这样的屏幕......
如此图所示,您将能够检查可视树并确认它实际上是WPF控件。之后,找到作者使用的Xaml并在您的应用中重新部署它。如果您无法获得Xaml,则必须使用Snoop(或其他类似实用程序)对控件进行“逆向工程”。
Snoop在这里...... https://snoopwpf.codeplex.com/
如果您无法获得Xaml,或者它不是WPF控件,那么您从头开始“逆向工程”。 HighCore表示这是一项微不足道的任务,我同意他的意见。
如果您实际上可以获得控件的实例,则可以使用此方法获取模板...
public void DefaultControlTemplateLoaded(TreeView sender, RoutedEventArgs e)
{
StringBuilder stringBuilder = new StringBuilder();
XmlWriterSettings xmlSettings = new XmlWriterSettings();
xmlSettings.Indent = true;
using (XmlWriter xmlWriter = XmlWriter.Create(stringBuilder, xmlSettings))
{
XamlWriter.Save(sender.ItemsPanel, xmlWriter);
}
Console.WriteLine(stringBuilder.ToString());
}
要做到这一点,你必须加载程序集并四处寻找,直到找到声明并使用Activator创建实例。
确保产品具有允许“逆向工程”的许可证!