WPF/AvalonDock v2.0 LayoutDocument

fex*_*fex 1 wpf avalondock

如何以编程方式添加LayoutDocument及其中的一些UIElements?(比如stackpanel,scrollviewer等)当用户点击"新建项目"按钮时,我想在LayoutDocumentPane中添加带有stackpanel,canvas等的新LayoutDocument.我可以以某种方式从一个LayoutDocument克隆xaml代码并将其加载到新的?是否可以将Title LayoutDocument属性绑定到ViewModel属性?(我得到错误它必须是依赖属性)

Jai*_*rín 6

你可以使用Content财产.例如,如果您想添加LayoutDocument带有自定义内容的新 内容(StackPanel例如),您可以按照以下方式执行:

//Get the main LayoutDocumentPane of your DockingManager 
var documentPane = dockManager.Layout.Descendents().OfType<LayoutDocumentPane>().FirstOrDefault();

if (documentPane != null)
{
    LayoutDocument layoutDocument = new LayoutDocument {Title = "New Document"};

    //*********Here you could add whatever you want***********
    layoutDocument.Content = new StackPanel();

    //Add the new LayoutDocument to the existing array
    documentPane.Children.Add(layoutDocument);
}
Run Code Online (Sandbox Code Playgroud)


mac*_*ing 5

首先,在XAML中 - 给网格命名,例如,x:Name ="mainGrid"

然后在课堂上写下这个

        //Create button - we put this in document
        Button mybutton = new Button();
        mybutton.Content = "hello";
        mybutton.Width = 100;
        mybutton.Height = 50;
        mybutton.Click += (sender, ev) => { MessageBox.Show("Hello"); };


        DockingManager dockmanager = new DockingManager();

        //Set theme
        dockmanager.Theme = new Xceed.Wpf.AvalonDock.Themes.ExpressionLightTheme();

        //Create LayoutRoot
        var layoutroot = new Xceed.Wpf.AvalonDock.Layout.LayoutRoot();

        //Create LayoutPanel
        var layoutpanel = new Xceed.Wpf.AvalonDock.Layout.LayoutPanel();

        //Create LayoutDocumentPane
        var layoutdocpane = new Xceed.Wpf.AvalonDock.Layout.LayoutDocumentPane();

        //Create LayoutDocument and set parameters of Document
        var LayoutDocument = new Xceed.Wpf.AvalonDock.Layout.LayoutDocument();
        LayoutDocument.Title = "Some text";
        //Put button in Document
        LayoutDocument.Content = mybutton;

        layoutdocpane.Children.Add(LayoutDocument);
        layoutpanel.Children.Add(layoutdocpane);
        layoutroot.RootPanel.Children.Add(layoutpanel);

        dockmanager.Layout = layoutroot;
        mainGrid.Children.Add(dockmanager);
Run Code Online (Sandbox Code Playgroud)

抱歉我的英语不好.请重写一下,如果有帮助的话.