2015-06-29 27 views
0

文件名SampleProject 我的XAML文件Mainwindow.xaml ----------如何綁定控制面板中的DevExpress docklayoutmanager

<Window x:Class="SampleProject.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:dxdo="http://schemas.devexpress.com/winfx/2008/xaml/docking" Closing="Window_Closing" 
     Title="MainWindow" Height="800" Width="800" WindowState="Maximized"> 
    <Grid> 
     <dxdo:DockLayoutManager x:Name="docklayoutmanager1" dxdo:RestoreLayoutOptions.RemoveOldPanels="False" dxdo:RestoreLayoutOptions.RemoveOldLayoutControlItems="False" Margin="0,50,0,0"> 
     </dxdo:DockLayoutManager> 
     <Button Width="100" VerticalAlignment="Top" HorizontalAlignment="Center" Height="30" x:Name="ClickMe" Content="Click Me" Click="ClickMe_Click" Margin="323,10,369,729" /> 

    </Grid> 
</Window> 

` 我xaml.cs文件MainWindow.xaml。 cs -------------------

using DevExpress.Xpf.Docking; 
using DevExpress.Xpf.Layout.Core; 
using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 

namespace SampleProject 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
      if(File.Exists("test.xml")) 
      { 
       docklayoutmanager1.RestoreLayoutFromXml("test.xml"); 
      } 
     } 

     private void ClickMe_Click(object sender, RoutedEventArgs e) 
     { 
      var panel = docklayoutmanager1.DockController.AddPanel(DockType.None); 
      panel.Caption = "Test Panel"; 
      panel.Name = "myPanel"; 
      panel.Content = "I want to serialize this code using guid Please provide example for creating such binding."; 
      FloatGroup floatgroup = new FloatGroup(); 
      floatgroup.Name = "myFloatGroup"; 
      floatgroup.FloatSize = new Size(500,500); 
      floatgroup.FloatLocation = new Point(300, 300); 
      floatgroup.Add(panel); 
      docklayoutmanager1.FloatGroups.Add(floatgroup); 
     } 

     private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
     { 
      string xmlFilePath = System.AppDomain.CurrentDomain.BaseDirectory + "test.xml"; 
      if (File.Exists("test.xml")) 
      { 
       docklayoutmanager1.SaveLayoutToXml("test.xml"); 
      } 
      else 
      { 
       using (File.Create("test.xml")) { } 
       docklayoutmanager1.SaveLayoutToXml("test.xml"); 
      } 
     } 
    } 
} 

我有一個文檔佈局管理器編程獲取面板和控件,其中有面板和控件。

在保存期間,我通過SaveLayoutToXml()爲我的面板和序列化控件使用bformatter.Serialize();來實現此目的。

因爲我有很多面板和獨特的控件。我想在保存和序列化之前在相同的面板中獲得相同的控件。請爲我提供一個代碼,用於識別面板和控件的唯一ID。

並且我有任何可以分配GUID的整數ID,因爲BindableName不適用於它。

感謝 DESH

+0

你可以顯示你的代碼到目前爲止? – DasDas

+0

我編輯了我的問題,請檢查。謝謝 –

+0

我已經做到了,謝謝。 –

回答

0

這是如何添加一個用戶控件,因爲似乎沒有人有興趣幫助,我搜索,做這樣的事情:

private FloatGroup CreateDocPanelFloatGroup(DocumentPanel dp) 
     { 
      FloatGroup floatGroup = new FloatGroup(); 
      floatGroup.FloatSize = new Size(500, 500); 
      floatGroup.Items.Add(dp); 

      return floatGroup; 
     } 

     private void OpenUC_ItemClick(object sender, DevExpress.Xpf.Bars.ItemClickEventArgs e) 
     {   
      openUC = new OpenUC(); 
      DocumentPanel dp = new DocumentPanel(); 
      dp.Name = "OpenUC" + count; 
      dp.Caption = "Open User Control"; 
      dp.BindableName = "OpenUC" + count; 
      var content = openUC; 
      dp.Content = content; 
      DockLayoutManager1.FloatGroups.Add(CreateDocPanelFloatGroup(dp));   

     } 
1

編程創建面板,並他們在運行時你的xaml文件。

UserC = new UserC(); 
      DocumentPanel dpanel = new DocumentPanel(); 
      dpanel.Name = "OpenUC" + count; 
      dpanel.Caption = "Open User Control"; 
      dpanel.BindableName = "OpenUC" + count; 
      var content = UserC; 
      dpanel.Content = content; 
      FloatGroup fGroup = new FloatGroup(); 
      fGroup.FloatSize = new Size(500, 500); 
      fGroup.Items.Add(dpanel); 

      DockLayoutManager1.FloatGroups.Add(fGroup);