Xceed DataGrid for WPF v7.3 Documentation

In This Topic
    Providing Unbound Data
    In This Topic

    The following example demonstrates how to use an unbound item property to display a calculated value. In this example, the total value of the units in stock.

    XAML
    Copy Code
    <Grid xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid">
      <Grid.Resources>
         <xcdg:DataGridCollectionViewSource x:Key="cvs_products"
                                            Source="{Binding Source={x:Static Application.Current}, Path=Products}">
            <xcdg:DataGridCollectionViewSource.ItemProperties>
              <xcdg:DataGridUnboundItemProperty Name="TotalUnitsValue"
                                                DataType="{x:Type sys:Double}"
                                                QueryValue="DataGridUnboundItemProperty_QueryValue" />
            </xcdg:DataGridCollectionViewSource.ItemProperties>
         </xcdg:DataGridCollectionViewSource>
         <local:CurrencyConverter x:Key="currencyConverter" />
      </Grid.Resources>
      <xcdg:DataGridControl x:Name="OrdersGrid"
                            ItemsSource="{Binding Source={StaticResource cvs_products}}">
         <xcdg:DataGridControl.Columns>
            <xcdg:Column FieldName="TotalUnitsValue"
                         Title="Total Inventory">
               <xcdg:Column.CellContentTemplate>
                  <DataTemplate>
                     <TextBlock Text="{Binding Converter={StaticResource currencyConverter}}" />
                  </DataTemplate>
               </xcdg:Column.CellContentTemplate>
            </xcdg:Column>
            <xcdg:Column FieldName="Photo"
                         Visible="False" />           
         </xcdg:DataGridControl.Columns>
      </xcdg:DataGridControl>
    </Grid>

    The following code provides the implementation of the QueryValue event in which the unbound value will be calculated and returned.

    VB.NET
    Copy Code
    Private Sub DataGridUnboundItemProperty_QueryValue( ByVal sender As Object, ByVal e As DataGridItemPropertyQueryValueEventArgs )
      Dim System.Data.DataRowView As row = TryCast( e.Item, System.Data.DataRowView )
      If Not row Is Nothing Then
        If( row( "UnitsInStock" ) <> DBNull.Value ) Then
          e.Value = CDouble( CInt( row( "UnitsInStock" ) ) * CDec( row( "UnitPrice" ) )
        End If
      End If
    End Sub
    C#
    Copy Code
    private void DataGridUnboundItemProperty_QueryValue( object sender, DataGridItemPropertyQueryValueEventArgs e )
    {
     System.Data.DataRowView row = e.Item as System.Data.DataRowView;
     if( row != null )
     {
       if( row[ "UnitsInStock" ] != DBNull.Value )
       {
         e.Value = ( double )( ( short )row[ "UnitsInStock" ] * ( decimal )row[ "UnitPrice" ] );
       }
     }
    }