IXRGrid (Compact 2013)


This class represents a flexible-grid surface that consists of columns and rows.


class IXRGrid : public IXRPanel

Inheritance Hierarchy










Retrieves a collection of column definitions that are defined on this instance of IXRGrid.


Retrieves a collection of row definitions that are defined on this instance of IXRGrid.


Retrieves a value that indicates whether gridlines are visible inside this grid object.


Sets a value that indicates whether gridlines are visible inside this grid object.

Thread Safety

Members of this class are thread-safe if you previously called IXRApplication::CreateHostFromXaml and supplied it with an XRWindowCreateParams structure that has AllowsMultipleThreadAccess set to true.


A grid is the most flexible and powerful container object provided by XAML for Windows Embedded.

After you create a grid object by using the IXRGrid class, you can position an object in a specific cell of that grid in C++, by referencing the grid row and the grid column for the object position directly on that object by setting the Grid.Column and Grid.Row attached properties on the child object. For more information, see IXRDependencyObject::SetAttachedProperty.

By default, a grid contains one row and one column. To define multiple rows and columns, you can add to the collection of column definitions or to the collection of row definitions. To retrieve these collections, call IXRGrid::GetColumnDefinitions or IXRGrid::GetRowDefinitions. Each IXRRowDefinition and IXRColumnDefinition object inside these collections defines a single row or column. The IXRRowDefinition and IXRColumnDefinition objects also define the size of each row and column, by using the XRGridLength structure. For a definition of each unit type, see XRGridUnitType.

Content can span across multiple rows and columns by using the Grid.RowSpan and Grid.ColumnSpan attached properties in Silverlight 3 XAML. You can set these attached properties by using the inherited method IXRDependencyObject::SetAttachedProperty.

The Margin property of an IXRFrameworkElement derived object describes the distance between an element and its child or peer elements. The HorizontalAlignment and VerticalAlignment properties describe how a child element should be positioned inside the allocated layout space of a parent element. You can precisely position child elements of a grid object by using a combination of the inherited methods IXRFrameworkElement::SetMargin, IXRFrameworkElement::SetHorizontalAlignment, and IXRFrameworkElement::SetVerticalAlignment.

When you create a class instance, use an IXRGridPtr smart pointer instead of a raw interface pointer. For more information, see XRPtr<Interface>.

You can also define a grid object in Silverlight 3 XAML. For information about the differences between XAML in XAML for Windows Embedded and Microsoft Silverlight 3, see Differences Between Microsoft Silverlight 3 and XAML for Windows Embedded. For more information about how to define this element in the source XAML for your application, see the Grid Class on MSDN.


The following code example shows how to create a grid object and its rows and columns, set attached properties to UI elements in order to add them to the grid, and add the grid to the content of an item in the element tree.


To make the following code example easier to read, security checking and error handling are not included. This code example should not be used in a release configuration unless it has been modified to include them.

#include "windows.h"
#include "XamlRuntime.h"
#include "XRPtr.h"

void CreateGrid(IXRGrid** pGrid, IXRApplication *pApplicationObject, IXRVisualHost* pVisualHost, int nrow, int ncol, IXRButton* pGreenButton)
     IXRColumnDefinitionCollectionPtr pColDefCollection;
     IXRRowDefinitionCollectionPtr    pRowDefCollection;

     IXRColumnDefinitionPtr           pColumn;
     IXRRowDefinitionPtr              pRow;

     int i=0;

     // Create a new grid object from the IXRApplication.

     // Set the properties you want on the grid
     // (for example, columns, rows, name, gridlines, etc.).





     // Create columns per the number of columns specified in ncol.
     for (i=0; i<ncol; i++) 



            pColDefCollection->Add(pColumn, NULL);



     // Create rows per the number of rows specified in nrow.

      for (i=0; i<nrow; i++) 



            pRowDefCollection->Add(pRow, NULL);
    // Position an existing green-button object in the first row in the 
    // first column of the grid.
    pGreenButton->SetAttachedProperty(L"Grid.Row", NULL, 0);
    pGreenButton->SetAttachedProperty(L"Grid.Column", NULL, 0);

    // Now get the root element (as a user control) from your visual 
    // host.
     IXRFrameworkElementPtr pRootElement;

    // Find the IXRUserControl object named "MyUserControl".
    IXRUserControlPtr pUserControl;
    pRootElement->FindName(L"MyUserControl", &pUserControl);

    // Now add our new grid as the content of the user control.


The previous code example assumes that you have already created an application instance, parsed the XAML markup into an element tree, and obtained a pointer (pVisualHost) to the visual host. For more information on the programming elements used in this code example, see IXRApplication, IXRVisualHost, IXRStackPanel, IXRColumnDefinition, IXRRowDefinition, IXRColumnDefinitionCollection, IXRRowDefinitionCollection, XRPtr<Interface>, and IXRUIElementCollection.

.NET Framework Equivalent







See Also


Classes for UI Element Management