Немного поздно, но я боролся с той же проблемой, и вот решение, которое я придумал, хотя и грубое, может показаться, что оно работает просто отлично:
<Window x:Class="MyWindow.MainWindow"
...
...
<TextBlock MouseLeftButtonUp="TextBlock_OnMouseLeftButtonUp">Here is some Text</TextBlock>
<TextBox Name="TextBox1" Width="150"></TextBox>
Затем вкод позади:
private void TextBlock_OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
TextBlock tb = sender as TextBlock;
TextPointer tp = tb.GetPositionFromPoint(e.GetPosition(tb), false);
int index = tp.GetLineStartPosition(0).GetOffsetToPosition(tp) - 1;
TextBox1.Text = tb.Text;
TextBox1.Focus();
TextBox1.CaretIndex = index;
}