#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" >