Hi my friend. i create a small example that contains your controls.
you are right. i think this behavior is because of Control.Property precedeny.
and you must write into xaml:
<Grid>
<TextBox Height="23" Width="80" HorizontalAlignment="Left" LostFocus="TextBox_LostFocus"/>
<TextBox Height="23" Width="80" HorizontalAlignment="Left" Margin="100 80 0 0" KeyboardNavigation.IsTabStop="False"/>
<Button x:Name="myButton" Content="first" Height="23" Width="80" VerticalAlignment="Top"/>
<Button Content="second" Height="23" Width="80" VerticalAlignment="Center"/>
</Grid>
and your code begind:
private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
myButton.Focus();
}