title: TextBox.Focus() only works if I have a MessageBox.Show() after it?
body: <p>Ok so obviously there's more to it, but here's the basics.  This is seemingly such a simple thing but it's not working.</p>
  
  <p>I have a Label.
  I have a TextBox.</p>
  
  <p>The ZIndex of the Label = "1"
  The ZIndex of the TextBox = "0"</p>
  
  <p>i.e. They are on top of one another and the TextBox is invisible.</p>
  
  <p>When the user clicks on the LABEL (right now Via PreviewMouseLeftButtonDown but will be a command in ViewModel after this "works") the application should set focus to the TextBox.</p>
  
  <p>Simple right?  Wrong...</p>
  
  <p>If I have this code...it does NOT work.</p>
  
  <pre><code>    private void inVisTxtBox_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
          {
              inVisTxtBox.Focus();
  //            TextBox_MouseDown(sender, e);
          }
  </code></pre>
  
  <p>If I have this code...it DOES work</p>
  
  <pre><code> private void inVisTxtBox_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
          {
              inVisTxtBox.Focus();
  //            TextBox_MouseDown(sender, e);
              MessageBox.Show("This is ridiculous");
          }
  </code></pre>
  
  <p>And finally the XAML:</p>
  
  <pre><code> &lt;Ctrls:AControl x:Class="&lt;location of class&gt;"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:CommandControls="clr-namespace:&lt;location of custom controls&gt;" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"&gt;
      &lt;Grid Margin="0,15,15,15"&gt;
          &lt;!--&lt;Button Height="50" Click="Button_Click"&gt;FOC&lt;/Button&gt;--&gt;
          &lt;TextBox x:Name="inVisTxtBox" Focusable="True" Grid.ZIndex="0" Width="100" Margin="5"/&gt;
          &lt;Label Grid.ZIndex="1" Margin="5" Content="243234234234234" HorizontalAlignment="Left" Width="100" PreviewMouseLeftButtonDown="inVisTxtBox_PreviewMouseLeftButtonDown" 
                 x:Name="KeyPress_TextBox"/&gt;
      &lt;/Grid&gt;
  &lt;/Ctrls:AControl&gt;
  </code></pre>
  
  <p><strong>EDIT</strong></p>
  
  <p>If I make the Label into a Templated Button with a label as it's template it works:</p>
  
  <pre><code>&lt;Button x:Name="KeyPress_TextBox" Grid.ZIndex="1" Margin="5" Content="243234234234234" HorizontalAlignment="Left" Width="100" Click="KeyPress_TextBox_Click"&gt;
      &lt;Button.Template&gt;
          &lt;ControlTemplate TargetType="Button"&gt;
              &lt;Label Content="{TemplateBinding Content}"/&gt;
          &lt;/ControlTemplate&gt;
      &lt;/Button.Template&gt;
  &lt;/Button&gt;
  </code></pre>
  
  <p>Why is that?</p>
  
  <p>Must have something to do with the way the events route/bubble?</p>
  
  <p>I have it working now by doing that...but I'm more curious what's happening.</p>
  
  <p>Also...none of the following works either:</p>
  
  <pre><code>Keyboard.Focus(inVisTxtBox);
  FocusManager.SetFocusedElement(MainGrid,inVisTxtBox);
  Keyboard.Focus(inVisTxtBox);
  </code></pre>