可以从详细视图切换到gridview,listview的控件名称

时间:2013-07-04 14:34:38

标签: wpf list grid controls detailview

我想在我的WPF项目中实现此控件但我不知道该控件的名称是什么? enter image description here 有没有人以前做过这个?请告诉我有关此控件的信息。 感谢

3 个答案:

答案 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控件,它将生成一个这样的屏幕......

Snoop display

如此图所示,您将能够检查可视树并确认它实际上是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创建实例。

确保产品具有允许“逆向工程”的许可证!