DevExpress BarManager SaveLayoutToStream

#wpf #exception #devexpress

#wpf #исключение #devexpress

Вопрос:

У меня есть окно, полное элементов управления DevExpress. Видный элемент управления представляет собой DockLayoutManager, содержащий группу вкладок (вкладки содержат одну из: элемент управления сводной таблицей или элемент управления сеткой). Этот элемент управления окружен другими закрепляемыми окнами, а также меню элементов в верхней части окна.

Я хотел бы сохранить макет строки меню элемента, вызвав SaveLayoutToStream для объекта BarManager.

Эта функция завершится успешно тогда и только тогда, когда расположение видного элемента управления идентично исходному расположению (т. е. во время разработки). Если я перетаскиваю отдельные вкладки и закрепляю их в DockLayoutManager, то я получаю следующее исключение:

 Exception of type 'DevExpress.Xpf.Core.Serialization.DuplicateSerializationIDException' was thrown.

 at DevExpress.Xpf.Core.Serialization.DuplicateSerializationIDException.Assert(IDXSerializable dxObj1, IDXSerializable dxObj2)
 at DevExpress.Xpf.Core.Serialization.DXSerializer.SerailizationStore.<.ctor>b__4(IDXSerializable dxObj)
 at DevExpress.Xpf.Core.Serialization.DXSerializer.AcceptCore(DependencyObject dObj, Action`1 visit, IEnumerable`1 parentIDs)
 at DevExpress.Xpf.Core.Serialization.DXSerializer.Accept(DependencyObject dObj, AcceptNestedObjects acceptNested, Action`1 visit)
 at DevExpress.Xpf.Core.Serialization.DXSerializer.SerailizationStore..ctor(DependencyObject root, AcceptNestedObjects acceptNested)
 at DevExpress.Xpf.Core.Serialization.DXSerializer.SerializeCore(DependencyObject root, Object path, String appName, DXOptionsLayout options, AcceptNestedObjects acceptNested)
 at DevExpress.Xpf.Bars.BarManager.SaveLayoutToStream(Stream stream)
 at LayoutExtensions.GetLayout(BarManager view) in C:LayoutHelper.cs:line 136
  

Ответ №1:

Мы рассмотрели стек вызовов и не можем даже представить, что может вызвать появление этой проблемы. Пожалуйста, отправьте образец проекта, показывающий эту проблему, в центр поддержки DevExpress. Мы выясним, почему возникает проблема, и исправим ее.

Ответ №2:

Смотрите

http://www.devexpress.com/Support/Center/e/E2272.aspx и http://www.devexpress.com/Support/Center/p/Q325319.aspx

Если вы используете объекты того же типа в своем макете, назначьте DXSerializer.Свойство SerializationID для всех объектов

Например

 <Window x:Class="WpfApplication.MainWindow"
        xmlns:core="http://schemas.devexpress.com/winfx/2008/xaml/core"
        xmlns:dxdo="http://schemas.devexpress.com/winfx/2008/xaml/docking"
  

 <dxdo:DockLayoutManager Name="FilterGridDockLayoutManager" core:DXSerializer.SerializationID="dock1" >