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" ] ); } } } |