Reasons for DataGrid ItemContainerGenerator.ContainerFromIndex's Row return as null

609 Views Asked by At

My intention to keep focus on the Selected Row of DataGrid. For this i searched and found the link How do I set the focus on a datagrid to a specific row?.. When i tried the same in my proj, i found the row always return's null..

I goggled for that too and got the link... Here i haven't used Virtualizing, more over i have turned off the Virtualizing.. Still am facing the same.. May i know some reasons why this returns null?

<DataGrid Name="DGrid"
                  Grid.Row="0"
                  Grid.Column="0"
                  HorizontalAlignment="Stretch"
                  AutoGenerateColumns="False"
                  BorderThickness="0"
                  CanUserAddRows="False"
                  CanUserDeleteRows="False"
                  CanUserResizeColumns="False"
                  CanUserSortColumns="True"
                  HeadersVisibility="Column"
                  IsReadOnly="True"
                  ItemsSource="{Binding Path=Reports,
                                        NotifyOnSourceUpdated=True}"
                  MouseDoubleClick="DGrid_MouseDoubleClick"
                  PreviewKeyDown="DGrid_PreviewKeyDown"
                  SelectionChanged="DGrid_SelectionChanged"
                  SelectionMode="Extended"
                  SelectionUnit="FullRow"
                  VerticalScrollBarVisibility="Auto" VirtualizingStackPanel.IsVirtualizing="False">
            <DataGrid.Resources>
                <Style x:Key="CellEditingStyle" TargetType="DataGridCell">
                    <Setter Property="DataGridCell.IsTabStop" Value="False" />
                </Style>
            </DataGrid.Resources>
            <DataGrid.Columns>
                <DataGridTemplateColumn x:Name="DueStatus"
                                        Width="16"
                                        CellStyle="{StaticResource CellEditingStyle}"
                                        SortMemberPath="OverDue">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <!--  ReSharper disable Xaml.BindingWithContextNotResolved - This will be generated at Runtime  -->
                                <Image Name="ImgOvr"
                                       Width="16"
                                       Height="16"
                                       Source="/VersadexMreUs;component/Images/signal_flag_red.png"
                                       Visibility="{Binding Converter={StaticResource TextToVisiblity},
                                                            Path=OverDue}" />
                                <!--  ReSharper restore Xaml.BindingWithContextNotResolved  -->
                            </StackPanel>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn x:Name="ArrestStatus"
                                        Width="16"
                                        CellStyle="{StaticResource CellEditingStyle}"
                                        SortMemberPath="ArrestMade">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <!--  ReSharper disable Xaml.BindingWithContextNotResolved - This will be generated at Runtime  -->
                                <Image Width="16"
                                       Height="16"
                                       Source="/VersadexMreUs;component/Images/car_compact_red.png"
                                       Visibility="{Binding Converter={StaticResource TextToVisiblity},
                                                            Path=ArrestMade}" />
                                <!--  ReSharper restore Xaml.BindingWithContextNotResolved  -->
                            </StackPanel>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn x:Name="IncompleteStatus"
                                        Width="16"
                                        CellStyle="{StaticResource CellEditingStyle}"
                                        SortMemberPath="InComplete">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <!--  ReSharper disable Xaml.BindingWithContextNotResolved - This will be generated at Runtime  -->
                                <Image Width="16"
                                       Height="16"
                                       Source="/VersadexMreUs;component/Images/document_warning.png"
                                       Visibility="{Binding Converter={StaticResource TextToVisiblity},
                                                            Path=InComplete}" />
                                <!--  ReSharper restore Xaml.BindingWithContextNotResolved  -->
                            </StackPanel>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTextColumn x:Name="RptStatus"
                                    MinWidth="120"
                                    Binding="{Binding Path=StatusMessage,
                                                      Converter={StaticResource TextToUpper}}"
                                    Header="Status" />
                <DataGridTextColumn x:Name="RptDesc"
                                    MinWidth="200"
                                    Binding="{Binding Path=Description,
                                                      Converter={StaticResource TextToUpper}}"
                                    Header="Report Description" />
                <DataGridTextColumn x:Name="RptState"
                                    MinWidth="250"
                                    Binding="{Binding Path=CurrentState,
                                                      Converter={StaticResource TextToUpper}}"
                                    Header="Current State" />
                <DataGridTextColumn x:Name="RptOfficer"
                                    MinWidth="180"
                                    Binding="{Binding Path=OfficerName,
                                                      Converter={StaticResource TextToUpper}}"
                                    Header="Reporting Officer" />
                <DataGridTextColumn x:Name="RptDate"
                                    MinWidth="83"
                                    Binding="{Binding Path=SubmitDate,
                                                      Converter={StaticResource TextToUpper}}"
                                    Header="Submit Date" />
            </DataGrid.Columns>
        </DataGrid>
0

There are 0 best solutions below