2015-06-29 2 views
0

File Name 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, поскольку 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); 
Смежные вопросы