I updated the example so that the issue is easier to identify. I would expect the following tab order...
CompanyName
FirstName
LastName
EmailAddress
Phone
SalesPerson
However, I get the following...
LastName
EmailAddress
Phone
CompanyName
FirstName
SalesPerson
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
Loaded="Window_Loaded"><Grid><DataGrid Name="dataGrid1" AutoGenerateColumns="False" KeyboardNavigation.TabNavigation="Local"><DataGrid.Columns><DataGridTextColumn KeyboardNavigation.TabIndex="0" Header="Company Name" Binding="{Binding CompanyName}"></DataGridTextColumn><DataGridTextColumn KeyboardNavigation.TabIndex="1" Header="Contact First Name" Binding="{Binding FirstName}"></DataGridTextColumn><DataGridTextColumn KeyboardNavigation.TabIndex="2" Header="Sales Person" Binding="{Binding SalesPerson}"></DataGridTextColumn></DataGrid.Columns><DataGrid.RowDetailsTemplate><DataTemplate><Border BorderThickness="0" Background="BlanchedAlmond" Padding="10"><StackPanel Orientation="Vertical"><StackPanel Orientation="Horizontal"><TextBlock FontSize="12" Text="Contact Last Name: " VerticalAlignment="Center" /><TextBox TabIndex="1" FontSize="16" Foreground="MidnightBlue" Text="{Binding LastName}" VerticalAlignment="Center" /></StackPanel><StackPanel Orientation="Horizontal"><TextBlock FontSize="12" Text="Email: " VerticalAlignment="Center" /><TextBox TabIndex="1" FontSize="16" Foreground="MidnightBlue" Text="{Binding EmailAddress}" VerticalAlignment="Center" /></StackPanel><StackPanel Orientation="Horizontal"><TextBlock FontSize="12" Text="Phone: " VerticalAlignment="Center" /><TextBox TabIndex="1" FontSize="16" Foreground="MidnightBlue" Text="{Binding Phone}" VerticalAlignment="Center" /></StackPanel> </StackPanel></Border></DataTemplate></DataGrid.RowDetailsTemplate><DataGrid.RowStyle><Style TargetType="{x:Type DataGridRow}" BasedOn="{StaticResource {x:Type DataGridRow}}"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type DataGridRow}"><Border KeyboardNavigation.TabNavigation="Local" x:Name="DGR_Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True"><SelectiveScrollingGrid KeyboardNavigation.TabNavigation="Local"><SelectiveScrollingGrid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/></SelectiveScrollingGrid.ColumnDefinitions><SelectiveScrollingGrid.RowDefinitions><RowDefinition Height="*"/><RowDefinition Height="Auto"/></SelectiveScrollingGrid.RowDefinitions><DataGridCellsPresenter Grid.Column="1" Grid.Row="0" ItemsPanel="{TemplateBinding ItemsPanel}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/><DataGridDetailsPresenter Grid.Column="1" Grid.Row="1" SelectiveScrollingGrid.SelectiveScrollingOrientation="{Binding AreRowDetailsFrozen, ConverterParameter={x:Static SelectiveScrollingOrientation.Vertical}, Converter={x:Static DataGrid.RowDetailsScrollingConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" Visibility="{TemplateBinding DetailsVisibility}"/><DataGridRowHeader Grid.RowSpan="2" SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" Visibility="{Binding HeadersVisibility, ConverterParameter={x:Static DataGridHeadersVisibility.Row}, Converter={x:Static DataGrid.HeadersVisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/></SelectiveScrollingGrid></Border></ControlTemplate></Setter.Value></Setter></Style></DataGrid.RowStyle></DataGrid></Grid></Window>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
AdventureWorksLT2008Entities advenWorksEntities = new AdventureWorksLT2008Entities();
ObjectQuery<Customer> customers = advenWorksEntities.Customers;
var query =
from customer in customers
orderby customer.CompanyName
select new
{
customer.LastName,
customer.FirstName,
customer.CompanyName,
customer.Title,
customer.EmailAddress,
customer.Phone,
customer.SalesPerson
};
dataGrid1.ItemsSource = query.ToList();
}