Silverlight / WPF - DataBinding inside the Grid

Asked By Parameswari on 19-Aug-11 08:37 AM
 
Hi friends,  

     When binding data into the grid the design appears first and after 6-8 secs the data binds into the grid. What can be done to make both the design and data viewed at same time?We are using telerik controls. Progress bar should be viewed until data is viewed I have sent my Xaml to view. Guide us in this issue.
   Thanks,
Parameswari

<Grid>
      <Grid.RowDefinitions>
       <RowDefinition Height="25"/>
       <RowDefinition Height="*"/>       
       </Grid.RowDefinitions>
       <HyperlinkButton x:Name="Hyp_AddNewInvoice" Grid.Row="0" Content="Add a new Invoice" Foreground="#FF154A93" Margin="10,5,0,5" Width="120"  HorizontalAlignment="Left" Command="{Binding NewInvoiceCommand}"/>
       <telerik:RadBusyIndicator x:Name="BusyIndicator" Grid.Row="1" BusyContent="Loading data..." DisplayAfter="0" AllowDrop="True" IsIndeterminate="True" Background="Transparent" BorderBrush="Transparent" BorderThickness="0">
       <telerikGridView:RadGridView x:Name="dtgInvoiceList" Margin="0" RowHeight="19" Grid.Row="1" 
                    BorderThickness="0,1,0,0" IsReadOnly="True" 
                    AutoGenerateColumns="False" VerticalAlignment="Top"  
                    HorizontalAlignment="Stretch" IsFilteringAllowed="False" 
                    ShowColumnHeaders="True"  ShowGroupPanel="False" 
                    CanUserSelect="True" CanUserSortColumns="True" 
                    CanUserFreezeColumns="False" IsEnabled="True" 
                    CanUserResizeColumns="True" RowIndicatorVisibility="Collapsed"
                    ItemsSource="{Binding Path=SalesHeaderforInvoice, Mode=TwoWay}"                     
                    SelectedItem="{Binding Path=SelectedInvoice, Mode=TwoWay}"  
                    ScrollMode="RealTime"
                    ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto">
         <i:Interaction.Triggers>
           <i:EventTrigger EventName="RowActivated">
             <i:InvokeCommandAction Command="{Binding EditCommand}" />
           </i:EventTrigger>
         </i:Interaction.Triggers>
         <telerikGridView:RadGridView.Columns >
           <telerikGridView:GridViewDataColumn Header="Type" Width="75" DataMemberBinding="{Binding TransactionName}"/>
           <telerikGridView:GridViewDataColumn Header="Date" Width="74" DataMemberBinding="{Binding TransactionDateTime}" DataFormatString = "{}{0:MM/dd/yyyy}" />
           <telerikGridView:GridViewDataColumn Header="No." Width="30" DataMemberBinding="{Binding SalesHeaderID}" SortingState="Descending"/>
           <telerikGridView:GridViewDataColumn Header="Customer Name" Width="2*" DataMemberBinding="{Binding Customer.CustomerName}"/>
           <telerikGridView:GridViewDataColumn Header="Due Date" Width="74" DataMemberBinding="{Binding DueDate}" DataFormatString = "{}{0:MM/dd/yyyy}"/>
           <telerikGridView:GridViewDataColumn Header="Total Price" Width="1*" DataMemberBinding="{Binding TotalAmount}" TextAlignment="Right" DataFormatString = "{}{0:c2}" />
           <telerikGridView:GridViewDataColumn Header="Balance" Width="1*" DataMemberBinding="{Binding Balance}" TextAlignment="Right" DataFormatString = "{}{0:c2}"/>
           <telerikGridView:GridViewDataColumn Header="Currency" Width="1*" DataMemberBinding="{Binding Currency.CurrencyDescription}"/>
           <telerikGridView:GridViewDataColumn Header="Total Price(USD)" Width="1*" DataMemberBinding="{Binding TotalAmountCurrency}" TextAlignment="Right" DataFormatString = "{}{0:c2}"/>
           <telerikGridView:GridViewDataColumn Header="Phone" Width="1*" DataMemberBinding="{Binding Phone.PhoneNumber, Converter={StaticResource phoneformat}}"/>
         </telerikGridView:RadGridView.Columns>
       </telerikGridView:RadGridView>
     </telerik:RadBusyIndicator>         
   </Grid>

 

Riley K replied to Parameswari on 19-Aug-11 12:34 PM
Can you  review this online example of RadGridView (since it demonstrates binding to RIA Services)? As you will see there, the busy indicator goes on and off as it should and this is done using a simple binding to the IsBusy property of the DomainDataSource:

<Grid>
    <Grid.RowDefinitions>
      <RowDefinition />
      <RowDefinition Height="30" />
    </Grid.RowDefinitions>
    <riaControls:DomainDataSource x:Name="DomainDataSource1" FilterOperator="Or" AutoLoad="True" QueryName="GetCustomers" PageSize="10" LoadedData="DomainDataSource1_LoadedData">
      <riaControls:DomainDataSource.DomainContext>
        <e:NorthwindDomainContext />
      </riaControls:DomainDataSource.DomainContext>
    </riaControls:DomainDataSource>
    <Border telerikQuickStart:ThemeAwareBackgroundBehavior.IsEnabled="True" Grid.RowSpan="3" />
    <telerik:RadBusyIndicator IsBusy="{Binding IsBusy, ElementName=DomainDataSource1}" >
      <telerik:RadGridView x:Name="RadGridView1" IsReadOnly="True" ItemsSource="{Binding Data, ElementName=DomainDataSource1}" AutoExpandGroups="True"
                 CanUserFreezeColumns="False" RowIndicatorVisibility="Visible"
                 Filtering="RadGridView1_Filtering" DistinctValuesLoading="RadGridView1_DistinctValuesLoading" />
    </telerik:RadBusyIndicator>
    <telerik:RadDataPager x:Name="RadDataPager1" Grid.Row="1" Source="{Binding Data, ElementName=DomainDataSource1}" DisplayMode="All" IsTotalItemCountFixed="True"/>
  </Grid>

Hope this will be useful. Let me know in case you need further assistance.