You might try using Microsoft.Windows.Themes.ListBoxChrome instead of the Border; that's what the default template for TextBox uses:
You should be able to use just ListBoxChrome instead of Border rather than re-templating TextBox to match the code you presented.