Xceed DataGrid for WPF v7.2 Documentation
Coercing a surface configuration

The following example demonstrates how to apply a different surface configuration on the back surface of the center card using the CoercedSurfaceConfiguration attached property.

VB.NET
Copy Code
Private m_fullSurfaceConfiguration As New ImageAndDataSurfaceConfiguration()
Private Sub ApplyCoercedSurfaceConfiguration( ByVal sender As Object, ByVal e As RoutedEventArgs )
  If Not Me.ProductsGrid.CurrentItem Is Nothing Then
    Dim card As Xceed.Wpf.DataGrid.DataRow = CType( Me.ProductsGrid.GetContainerFromItem( _
                                         Me.ProductsGrid.CurrentItem ), Xceed.Wpf.DataGrid.DataRow )
    If Not card Is Nothing Then
       card.SetValue( MultiSurfaceViewBase.CoercedSurfaceConfigurationProperty, m_fullSurfaceConfiguration )
    End If
  End If
End Sub
C#
Copy Code
private ImageAndDataSurfaceConfiguration m_fullSurfaceConfiguration = new ImageAndDataSurfaceConfiguration();
private void ApplyCoercedSurfaceConfiguration( object sender, RoutedEventArgs e )
{
  if( this.ProductsGrid.CurrentItem != null )
  {
   Xceed.Wpf.DataGrid.DataRow card = this.ProductsGrid.GetContainerFromItem(
                                        this.ProductsGrid.CurrentItem ) as Xceed.Wpf.DataGrid.DataRow;
   if( card != null )
   {
     card.SetValue( MultiSurfaceViewBase.CoercedSurfaceConfigurationProperty, m_fullSurfaceConfiguration );
   }
  }
}

The following XAML demonstrates how to define the initial surface configurations that are applied to various surfaces. 

XAML
Copy Code
<Grid xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid">     
  <Grid.RowDefinitions>
     <RowDefinition Height="Auto"/>
     <RowDefinition/>
  </Grid.RowDefinitions>
  <Grid.Resources>
    
     <xcdg:DataGridCollectionViewSource x:Key="cvs_products"
                                    Source="{Binding Source={x:Static Application.Current}, Path=ProductsTable}"/>
  </Grid.Resources>
 <Button Content="Coerce Surface Configuration"
         Click="ApplyCoercedSurfaceConfiguration"
         Grid.Row="0"/>
  <xcdg:DataGridControl x:Name="ProductsGrid"
                        ItemsSource="{Binding Source={StaticResource cvs_products}}"
                        Grid.Row="1">
     <xcdg:DataGridControl.Columns>
        <xcdg:Column FieldName="ProductName"
                     IsMainColumn="True"/>
     </xcdg:DataGridControl.Columns>
    <xcdg:DataGridControl.View>
       <xcdg:CardflowView3D CardHeightToViewportRatio="0.5">
          <xcdg:CardflowView3D.Theme>
             <xcdg:ElementalBlackTheme>
                <xcdg:ElementalBlackTheme.SurfaceConfigurations>
                   <xcdg:ImageSurfaceConfiguration xcdg:CardflowView3D.Surfaces="Left, Right"/>
                   <xcdg:ImageAndTitleSurfaceConfiguration xcdg:CardflowView3D.Surfaces="Center"/>
                   <xcdg:CompleteSurfaceConfiguration xcdg:CardflowView3D.Surfaces="Back"
                                                      AutoFillDefaultRegion="False">
                      <xcdg:CompleteSurfaceConfiguration.DataRegionConfiguration>
                         <xcdg:RegionConfiguration FieldNames="ProductID, UnitPrice, UnitsInStock"/>
                      </xcdg:CompleteSurfaceConfiguration.DataRegionConfiguration>                      
                   </xcdg:CompleteSurfaceConfiguration>
                </xcdg:ElementalBlackTheme.SurfaceConfigurations>
             </xcdg:ElementalBlackTheme>
          </xcdg:CardflowView3D.Theme>
       </xcdg:CardflowView3D>           
    </xcdg:DataGridControl.View>
  </xcdg:DataGridControl>
</Grid>