c# - Custom DataGrid WinRT Rendered Size 0 -


i'm trying build datagrid in winrt. when start this, datagrid has it's full size. when check winrtxamltoolkit.debugging tool, see _itemspanel has rendered size 0. think easiest way find problem when paste whole code in here^^

        <local:datagrid itemssource="{binding material}">             <local:datagrid.itemtemplate>                 <datatemplate>                     <grid background="white">                         <textblock text="{binding name}" margin="5" />                     </grid>                 </datatemplate>             </local:datagrid.itemtemplate>         </local:datagrid> 

here datagrid class:

    public class datagrid : panel     {         private stackpanel _itemspanel;          public datatemplate itemtemplate { get; set; }          public static readonly dependencyproperty itemssourceproperty =             dependencyproperty.register("itemssource",                                         typeof(ienumerable<object>),                                         typeof(datagrid),                                         new propertymetadata(0, itemssourcechangedcallback));          private static void itemssourcechangedcallback(dependencyobject d, dependencypropertychangedeventargs args)         {             if (args.newvalue == null)                 return;              if (args.newvalue == args.oldvalue)                 return;              datagrid datagrid = d datagrid;              if (datagrid == null)                 return;              var obslist = args.newvalue inotifycollectionchanged;              if (obslist != null)             {                 datagrid.render();             }         }          public ienumerable<object> itemssource         {             { return (ienumerable<object>)getvalue(itemssourceproperty); }             set { setvalue(itemssourceproperty, value); }         }          public datagrid()         {             _itemspanel = new stackpanel();             _itemspanel.height = 800;             _itemspanel.width = 400;             _itemspanel.margin = new thickness(10, 10, 10, 10);              _itemspanel.background = new solidcolorbrush(colors.white);             children.add(_itemspanel);         }          public void render()         {             _itemspanel.children.clear();              foreach (object item in itemssource)             {                 frameworkelement element = itemtemplate.loadcontent() frameworkelement;                  if (element == null)                     return;                  element.datacontext = item;                  _itemspanel.children.add(element);             }         }          protected override size arrangeoverride(size finalsize)         {             return base.arrangeoverride(finalsize);         }          protected override size measureoverride(size availablesize)         {             this.clip = new rectanglegeometry { rect = new rect(0, 0, availablesize.width, availablesize.height) };              foreach (frameworkelement container in children)             {                 container.measure(new size(double.positiveinfinity, double.positiveinfinity));             }              return availablesize;         }     } 

hope can me :)


Comments

Popular posts from this blog

How to mention the localhost in android -

php - Calling a template part from a post -

c# - String.format() DateTime With Arabic culture -