[Expand]General Information
[Expand]WinForms Controls
[Expand]ASP.NET Controls and MVC Extensions
[Expand]ASP.NET Bootstrap Controls
[Expand]ASP.NET Core Bootstrap Controls
[Collapse]WPF Controls
  Prerequisites
 [Expand]What's Installed
 [Expand].NET Core 3 Support
 [Expand]Common Concepts
 [Expand]MVVM Framework
 [Expand]Controls and Libraries
 [Expand]Scaffolding Wizard
 [Expand]Localization
  Redistribution and Deployment
  Get More Help
 [Collapse]API Reference
  [Expand]DevExpress.Charts.Designer
  [Expand]DevExpress.Data
  [Expand]DevExpress.Mvvm.UI
  [Expand]DevExpress.Mvvm.UI.Interactivity
  [Expand]DevExpress.Mvvm.UI.ModuleInjection
  [Expand]DevExpress.Xpf.Accordion
  [Collapse]DevExpress.Xpf.Bars
   [Expand]AddBarAction Class
   [Expand]AddBarItemAction Class
   [Expand]AddBarItemLinkAction Class
   [Expand]Bar Class
   [Expand]BarActionBase Class
   [Expand]BarButtonItem Class
   [Expand]BarButtonItemLink Class
   [Expand]BarCheckItem Class
   [Expand]BarCheckItemLink Class
   [Expand]BarCollection Class
   [Expand]BarContainerControl Class
    BarContainerType Enumeration
   [Expand]BarDockInfo Class
   [Expand]BarEditItem Class
   [Expand]BarEditItemLink Class
   [Expand]BarItem Class
   [Expand]BarItemActionBase Class
    BarItemAlignment Enumeration
    BarItemAutoSizeMode Enumeration
   [Expand]BarItemCollection Class
    BarItemDisplayMode Enumeration
   [Expand]BarItemLink Class
   [Expand]BarItemLinkActionBase Class
   [Expand]BarItemLinkBase Class
   [Expand]BarItemLinkCollection Class
   [Expand]BarItemLinkHolderBase Class
   [Expand]BarItemLinkMenuHeader Class
   [Expand]BarItemLinkSeparator Class
   [Expand]BarItemMenuHeader Class
    BarItemMergeType Enumeration
   [Expand]BarItemSeparator Class
   [Expand]BarLinkContainerItem Class
   [Expand]BarLinkContainerItemLink Class
   [Expand]BarListItem Class
   [Expand]BarListItemLink Class
   [Collapse]BarManager Class
     BarManager Members
     BarManager Constructor
    [Expand]BarManager Properties
    [Collapse]BarManager Events
      BeforeCheckCloseAllPopups Event
      ItemClick Event
      ItemDoubleClick Event
      LayoutUpgrading Event
    [Expand]BarManager Methods
   [Expand]BarManagerActionCollection Class
   [Expand]BarManagerActionContainer Class
   [Expand]BarManagerCategory Class
   [Expand]BarManagerCategoryCollection Class
   [Expand]BarManagerController Class
   [Expand]BarManagerControllerActionBase Class
   [Expand]BarManagerControllerBase Class
   [Expand]BarNameScope Class
   [Expand]BarPopupBase Class
   [Expand]BarsLocalizer Class
   [Expand]BarSplitButtonItem Class
   [Expand]BarSplitButtonItemLink Class
   [Expand]BarSplitCheckItem Class
   [Expand]BarSplitCheckItemLink Class
   [Expand]BarStaticItem Class
   [Expand]BarStaticItemLink Class
   [Expand]BarSubItem Class
   [Expand]BarSubItemLink Class
    ButtonSwitcher Enumeration
   [Expand]CreateStandardLayoutAction Class
    ElementMergingBehavior Enumeration
   [Expand]Gallery Class
    GalleryCheckDrawMode Enumeration
   [Expand]GalleryControl Class
   [Expand]GalleryItem Class
    GalleryItemCheckMode Enumeration
   [Expand]GalleryItemCollection Class
   [Expand]GalleryItemGroup Class
   [Expand]GalleryItemGroupCollection Class
    GallerySizeMode Enumeration
    GlyphSize Enumeration
   [Expand]IControllerAction Interface
   [Expand]ILinksHolder Interface
   [Expand]InsertAction Class
   [Expand]InsertBarAction Class
   [Expand]InsertBarItemAction Class
   [Expand]InsertBarItemLinkAction Class
   [Expand]InsertMainMenuIfNotExistAction Class
   [Expand]InsertStatusBarIfNotExistAction Class
   [Expand]ItemClickEventArgs Class
    ItemClickEventHandler Delegate
    ItemLinksHolderType Enumeration
   [Expand]LayoutUpgradingEventArgs Class
    LayoutUpgradingEventHandler Delegate
   [Expand]LinkListItem Class
   [Expand]LinkListItemLink Class
   [Expand]MainMenuControl Class
    MDIMergeStyle Enumeration
   [Expand]MergingProperties Class
   [Expand]PopupControlContainer Class
   [Expand]PopupControlContainerInfo Class
   [Expand]PopupInfo<PopupType> Class
   [Expand]PopupMenu Class
   [Expand]PopupMenuBase Class
   [Expand]PopupMenuInfo Class
    PopupMenuItemsDisplayMode Enumeration
   [Expand]RadialContextMenu Class
   [Expand]RemoveAction Class
   [Expand]RemoveBarAction Class
   [Expand]RemoveBarItemAction Class
   [Expand]RemoveBarItemAndLinkAction Class
   [Expand]RemoveBarItemLinkAction Class
   [Expand]ReplaceAction Class
    RibbonItemStyles Enumeration
   [Expand]SetBarAction Class
   [Expand]SetBarItemAction Class
   [Expand]SetBarItemLinkAction Class
   [Expand]StatusBarControl Class
   [Expand]TemplatedBarManagerController Class
   [Expand]ToolBarControl Class
   [Expand]ToolBarControlBase Class
   [Expand]ToolbarListItem Class
   [Expand]ToolbarListItemLink Class
    ToolbarListItemType Enumeration
    ToolBarMergeStyle Enumeration
   [Expand]UpdateAction Class
   [Expand]UpdateBarAction Class
   [Expand]UpdateBarItemAction Class
   [Expand]UpdateBarItemLinkAction Class
   [Expand]UpdateBarItemLinkActionBase Class
  [Expand]DevExpress.Xpf.Carousel
  [Expand]DevExpress.Xpf.Charts
  [Expand]DevExpress.Xpf.Charts.Localization
  [Expand]DevExpress.Xpf.Charts.RangeControlClient
  [Expand]DevExpress.Xpf.ChunkList
  [Expand]DevExpress.Xpf.Controls
  [Expand]DevExpress.Xpf.Core
  [Expand]DevExpress.Xpf.Core.ConditionalFormatting
  [Expand]DevExpress.Xpf.Core.DataSources
  [Expand]DevExpress.Xpf.Core.FilteringUI
  [Expand]DevExpress.Xpf.Core.Native
  [Expand]DevExpress.Xpf.Core.ServerMode
  [Expand]DevExpress.Xpf.Data
  [Expand]DevExpress.Xpf.DataAccess
  [Expand]DevExpress.Xpf.DataAccess.DataSourceWizard
  [Expand]DevExpress.Xpf.Diagram
  [Expand]DevExpress.Xpf.Dialogs
  [Expand]DevExpress.Xpf.Docking
  [Expand]DevExpress.Xpf.Docking.Base
  [Expand]DevExpress.Xpf.DocumentViewer
  [Expand]DevExpress.Xpf.DXBinding
  [Expand]DevExpress.Xpf.Editors
  [Expand]DevExpress.Xpf.Editors.DataPager
  [Expand]DevExpress.Xpf.Editors.DateNavigator
  [Expand]DevExpress.Xpf.Editors.ExpressionEditor
  [Expand]DevExpress.Xpf.Editors.ExpressionEditor.Native
  [Expand]DevExpress.Xpf.Editors.Filtering
  [Expand]DevExpress.Xpf.Editors.Flyout
  [Expand]DevExpress.Xpf.Editors.Flyout.Native
  [Expand]DevExpress.Xpf.Editors.Helpers
  [Expand]DevExpress.Xpf.Editors.Native
  [Expand]DevExpress.Xpf.Editors.Popups
  [Expand]DevExpress.Xpf.Editors.RangeControl
  [Expand]DevExpress.Xpf.Editors.Settings
  [Expand]DevExpress.Xpf.Editors.Validation
  [Expand]DevExpress.Xpf.ExpressionEditor
  [Expand]DevExpress.Xpf.Gantt
  [Expand]DevExpress.Xpf.Gauges
  [Expand]DevExpress.Xpf.Gauges.Localization
  [Expand]DevExpress.Xpf.Grid
  [Expand]DevExpress.Xpf.Grid.ConditionalFormatting
  [Expand]DevExpress.Xpf.Grid.LookUp
  [Expand]DevExpress.Xpf.Grid.TreeList
  [Expand]DevExpress.Xpf.Layout.Core
  [Expand]DevExpress.Xpf.LayoutControl
  [Expand]DevExpress.Xpf.Map
  [Expand]DevExpress.Xpf.NavBar
  [Expand]DevExpress.Xpf.Navigation
  [Expand]DevExpress.Xpf.PdfViewer
  [Expand]DevExpress.Xpf.PivotGrid
  [Expand]DevExpress.Xpf.PivotGrid.Printing
  [Expand]DevExpress.Xpf.Printing
  [Expand]DevExpress.Xpf.Printing.Parameters
  [Expand]DevExpress.Xpf.Printing.Parameters.Models
  [Expand]DevExpress.Xpf.Printing.PreviewControl
  [Expand]DevExpress.Xpf.Printing.PreviewControl.Bars
  [Expand]DevExpress.Xpf.Prism
  [Expand]DevExpress.Xpf.PropertyGrid
  [Expand]DevExpress.Xpf.Reports.UserDesigner
  [Expand]DevExpress.Xpf.Reports.UserDesigner.Extensions
  [Expand]DevExpress.Xpf.Reports.UserDesigner.Localization
  [Expand]DevExpress.Xpf.Reports.UserDesigner.ReportWizard
  [Expand]DevExpress.Xpf.Reports.UserDesigner.ReportWizard.Pages
  [Expand]DevExpress.Xpf.Ribbon
  [Expand]DevExpress.Xpf.RichEdit
  [Expand]DevExpress.Xpf.RichEdit.Menu
  [Expand]DevExpress.Xpf.Scheduler
  [Expand]DevExpress.Xpf.Scheduler.Drawing
  [Expand]DevExpress.Xpf.Scheduler.Menu
  [Expand]DevExpress.Xpf.Scheduler.Reporting
  [Expand]DevExpress.Xpf.Scheduler.UI
  [Expand]DevExpress.Xpf.Scheduling
  [Expand]DevExpress.Xpf.Scheduling.Common
  [Expand]DevExpress.Xpf.Scheduling.Editors
  [Expand]DevExpress.Xpf.Scheduling.iCalendar
  [Expand]DevExpress.Xpf.Scheduling.Reporting
  [Expand]DevExpress.Xpf.Scheduling.Visual
  [Expand]DevExpress.Xpf.Scheduling.VisualData
  [Expand]DevExpress.Xpf.SpellChecker
  [Expand]DevExpress.Xpf.Spreadsheet
  [Expand]DevExpress.Xpf.Spreadsheet.Menu
  [Expand]DevExpress.Xpf.TreeMap
  [Expand]DevExpress.Xpf.Utils.Themes
  [Expand]DevExpress.Xpf.WindowsUI
  [Expand]DevExpress.Xpf.WindowsUI.Internal
  [Expand]DevExpress.Xpf.WindowsUI.Navigation
  [Expand]DevExpress.XtraRichEdit
  [Expand]DevExpress.XtraRichEdit.Printing
[Expand]Xamarin Controls
[Expand]Windows 10 App Controls
[Expand]Office File API
[Expand]Reporting
[Expand]Report and Dashboard Server
[Expand]Dashboard
[Expand]eXpressApp Framework
[Expand]eXpress Persistent Objects
[Expand]CodeRush
[Expand]CodeRush Classic
[Expand]Cross-Platform Core Libraries
[Expand]Tools and Utilities
 End-User Documentation
View this topic on docs.devexpress.com (Learn more)

BarManager.LayoutUpgrading Event

Allows you to customize the layout of bar objects being loaded from a stream or XML file.

Namespace:DevExpress.Xpf.Bars
Assembly:DevExpress.Xpf.Core.v19.1.dll

Expanded Syntax

Expanded Event Data

The event handler receives an argument of type LayoutUpgradingEventArgs containing data related to this event.

The following LayoutUpgradingEventArgs properties provide information specific to this event.
Property Description
Handled Gets or sets a value that indicates the present state of the event handling for a routed event as it travels the route.
NewItems Provides access to a collection of actions used to create new bar objects (bars, bar items and bar item links). New bar objects are those that are not defined in the layout being loaded.
OriginalSource Gets the original reporting source as determined by pure hit testing, before any possible System.Windows.RoutedEventArgs.Source adjustment by a parent class.
RoutedEvent Gets or sets the System.Windows.RoutedEventArgs.RoutedEvent associated with this System.Windows.RoutedEventArgs instance.
Source Gets or sets a reference to the object that raised the event.

Expanded Remarks

A layout of bar objects can be loaded via the RestoreLayoutFromStream and RestoreLayoutFromXml methods. If layout versions of the current BarManager and the loaded layout do not match, the LayoutUpgrading event fires, allowing you to customize the layout of bar objects. When this event fires, its NewItems parameter contains actions that will create new bar objects (new bar objects are bars, bar items and bar item links that were defined in a BarManager after a layout has been saved to a data store). You can remove any existing action or add new actions to create custom bar objects during the layout load.

For the LayoutUpgrading event to be fired, layout versions of the current BarManager and loaded layout must not match. To specify a layout version for a BarManager, use the DXSerializer.LayoutVersion attached property.

Consider a situation where you provided an end-user with the first version of your application with bars as part of the application's UI. An end-user runs the application and saved the layout of bars to an XML file. Then, you are planning to release a new version of this application, extending the UI with new bar objects. When designing the application, set the AddNewItems property to true. Otherwise, the new bar objects will be discarded when an end-user loads the saved layout.

The LayoutUpgrading event will fire during layout loading if you specify a different layout version for your BarManager via the DXSerializer.LayoutVersion attached property. If you set the AddNewItems property to true, the event's NewItems collection will contain actions used to create new bar objects. New bar objects are those that have the DXSerializer.LayoutVersion attached property set to the same value as the BarManager's DXSerializer.LayoutVersion attached property. So, to make bar objects appear in the event's NewItems collection, ensure that the AddNewItems property is enabled, and these bar objects have the same layout version as the BarManager. If the AddNewItems property is disabled, the NewItems collection will be empty and the layout will be loaded from a data store as is, discarding the new bar objects, if any.

If a layout version is assigned to a BarManager and you add a new bar or bar item link to a bar at design time, the same layout version is automatically assigned to these new bar objects in XAML.

Note

For the layout of bars to be saved, set the DevExpress.Xpf.Core.Serialization.DXSerializer.DXSerializer.SerializationID attached property for a BarManager to any object (for example, a string).

Expanded See Also

Is this topic helpful?​​​​​​​