По умолчанию, любое XAF-приложение обеспечено стандартной системой навигации. В этом разделе описано, как заменить XAF Navigation System на Xafari ARMs. Ознакомившись с данной документацией, вы сможете использовать расширенные возможности ARM вместо стандартного Navigation Items. При изложении будут использованы фрагменты кода из демо-приложения Xafari Northwind.

Для решения задачи необходимо последовательно выполнить следующие шаги:

 

 public interface IModelNorthwind

 {

         [DefaultValue(true)]

         [Category("Appearance")]

         [Description("Specifies whether to display the  Arms pane")]

         bool EnableARMs { getset; }        

 }

 

 

 public partial class EnableARMsViewController : ViewControllerIModelExtender

 {

         public EnableARMsViewController()

         {

                 InitializeComponent();

                 RegisterActions(components);

         }

 

         #region IModelExtender Members

 

         void IModelExtender.ExtendModelInterfaces(ModelInterfaceExtenders extenders)

         {

                 extenders.Add<IModelArmDesignIModelNorthwind>();

         }

 

         #endregion

 }

 

Главное окно приложения (main Window) сконструировано на основании XAF Template. Каждый встроенный Template содержит контейнер для Navigation Items. Для отображения ARM Items необходимо добавить новый Template, причем, эта процедура выполняется по-разному для Windows Forms и ASP.NET приложений.

Windows Forms

 

 public sealed partial class WinAppModuleModule : ModuleBase

 {

 

         ...

         public override void Setup(XafApplication application)

         {

                 ...

                 this.Application.CreateCustomTemplate += Application_CreateCustomTemplate;

                 ...

         }

 

         ...

 

         void Application_CreateCustomTemplate(object sender, CreateCustomTemplateEventArgs e)

         {

                 if (this.Application == null || this.Application.Model == nullreturn;

                 if (e.Context == TemplateContext.ApplicationWindow)

                 {

                         e.Template = ((IModelNorthwind)this.Application.Model.Xafari().Arms().ArmDesign).EnableARMs

                                 new ArmsMainForm()

                                 null;

                 }

                 else if (e.Context == TemplateContext.View)

                         e.Template = new DetailViewForm();

         }

 }

 

Полный код, использованный в документе, можно изучить в перечисленных ниже файлах демо-приложении Northwind, установленного вместе с Xafari: