Этот пример демонстрирует, как управлять генерацией View при помощи XafariViewLayoutStrategy. Для простоты понимания, сначала мы просто добавим бизнес-класс XafariViewLayoutGeneratorObject и укажем его свойства. Затем начнем последовательно применять к нему специальные атрибуты с различными параметрами и описывать, как они повлияют на генерацию View. Окончательный вариант вы можете найти в файле XafariViewLayoutGeneratorObject.cs, который является частью исходного кода демо приложения Feature Center, поставляемого вместе с Xafari. Следуйте изложенным ниже шагам.

 

  public class XafariViewLayoutGeneratorObject : ObjectBase

   {

      public XafariViewLayoutGeneratorObject(Session session) : base(session) {}

 

      private byte _byte;

      private decimal _decimal;

      private double _double;

      private float _float;

      private Int32 _integer;

      private Int64 _long;

      private string _string;

 

      public byte Byte

       {

          get { return this._byte; }

          set { SetPropertyValue("Byte", ref this._byte, value); }

       }

 

      public decimal Decimal

       {

          get { return this._decimal; }

          set { SetPropertyValue("Decimal", ref this._decimal, value); }

       }

 

      public double Double

       {

          get { return this._double; }

          set { SetPropertyValue("Double", ref this._double, value); }

       }

 

      public float Float

       {

          get { return this._float; }

          set { SetPropertyValue("Float", ref this._float, value); }

       }

 

      public Int32 Integer

       {

          get { return this._integer; }

          set { SetPropertyValue("Integer", ref this._integer, value); }

       }

 

      public Int64 Long

       {

          get { return this._long; }

          set { SetPropertyValue("Long", ref this._long, value); }

       }

 

      public string String

       {

          get { return this._string; }

          set { SetPropertyValue("String", ref this._string, value); }

       }

 

      public XPCollection<XafariViewLayoutGeneratorObject> Objects

         {

                 get{ return new XPCollection<XafariViewLayoutGeneratorObject>(this.Session,null,new SortProperty[] {}); }

         }

   }

 

 

   [ViewLayoutStrategy(typeof(XafariViewLayoutStrategy))]

  public class XafariViewLayoutGeneratorObject : ObjectBase

   {

         ...

 

 

   [CreateListView(Id = "XafariViewLayoutGeneratorObject_Code1_ListView", Layout = "Byte;Decimal;Double;Float")]

   [CreateListView(Id = "XafariViewLayoutGeneratorObject_Code1_LookupListView", Layout = "Integer;Long;String", ListViewType = ListViewType.LookupListView)]

   [CreateDetailView(Id = "XafariViewLayoutGeneratorObject_Code1_DetailView", Layout = "String;Integer;Double;" +

                                                                                      "GroupByte[Byte,Byte,Byte];" +

                                                                                      "GroupDecimal[Decimal,Decimal,Decimal];" +

                                                                                      "GroupFloat[Float,Float,Float];Objects")]

   [ViewLayoutStrategy(typeof(XafariViewLayoutStrategy))]

  public class XafariViewLayoutGeneratorObject : ObjectBase

   {

         ...

 

         ...

   [CreateListView(Id = "XafariViewLayoutGeneratorObject_Code2_ListView", Layout = "Integer;Long;String")]

   [CreateListView(Id = "XafariViewLayoutGeneratorObject_Code2_LookupListView", Layout = "Byte;Decimal;Double;Float", ListViewType = ListViewType.LookupListView)]

   [CreateDetailView(Id = "XafariViewLayoutGeneratorObject_Code2_DetailView", Layout = "String;Group[Byte,Integer];Objects")]

         ...

         ...

       [CreateListView(Layout = "String;Byte",ListViewType = ListViewType.LookupListView)]

      public XPCollection<XafariViewLayoutGeneratorObject> Objects

         {

                 get{ return new XPCollection<XafariViewLayoutGeneratorObject>(this.Session,null,new SortProperty[] {}); }

         }

         ...

         ...

  public class XafariViewLayoutGeneratorObject : ObjectBase

   {

      public XafariViewLayoutGeneratorObject(Session session) : base(session) {}

         ...

       [VisibleInListView(true)]

       [VisibleInLookupListView(true)]

      public byte Byte

       {

          get { return this._byte; }

          set { SetPropertyValue("Byte", ref this._byte, value); }

       }

       [VisibleInListView(true)]

      public decimal Decimal

       {

          get { return this._decimal; }

          set { SetPropertyValue("Decimal", ref this._decimal, value); }

       }

       [VisibleInListView(true)]

       [VisibleInLookupListView(true)]

      public double Double

       {

          get { return this._double; }

          set { SetPropertyValue("Double", ref this._double, value); }

       }

       [VisibleInDetailView(true)]

      public float Float

       {

          get { return this._float; }

          set { SetPropertyValue("Float", ref this._float, value); }

       }

       [VisibleInDetailView(true)]

       [VisibleInLookupListView(true)]

      public Int32 Integer

       {

          get { return this._integer; }

          set { SetPropertyValue("Integer", ref this._integer, value); }

       }

       [VisibleInDetailView(true)]

      public Int64 Long

       {

          get { return this._long; }

          set { SetPropertyValue("Long", ref this._long, value); }

       }

       [VisibleInAllView(true)]

      public string String

       {

          get { return this._string; }

          set { SetPropertyValue("String", ref this._string, value); }

       }

 

       [NonPersistent]

       [VisibleInDetailView(true)]

       [CreateListView(Layout = "String;Byte",ListViewType = ListViewType.LookupListView)]

      public XPCollection<XafariViewLayoutGeneratorObject> Objects

         {

                 get{ return new XPCollection<XafariViewLayoutGeneratorObject>(this.Session,null,new SortProperty[] {}); }

         }

   }

         ...