テキストボックスの水平方向のパディングを最小限に抑えたい場合があります。
snoop を使用すると、テキストボックスが複数のサブコントロールで構成されていることがわかりました。そのうちの 1 つは、マージンが 2,0,2,0 の TextBoxView です。
TextBoxView は wpf の内部コンポーネントであり、パブリック API はありません。
「内部パディング」を取り除くにはどうすればよいですか??
外側のマージンを -2,0,-2,0 に設定して、パディングを補正します。
その内部パディングを削除するカスタム コントロールを作成しました。
public class MyTextBox : TextBox
{
public MyTextBox()
{
Loaded += OnLoaded;
}
void OnLoaded(object sender, RoutedEventArgs e)
{
// the internal TextBoxView has a margin of 2,0,2,0 that needs to be removed
var contentHost = Template.FindName("PART_ContentHost", this) as ScrollViewer;
if (contentHost != null && contentHost.Content != null && contentHost.Content is FrameworkElement)
{
var textBoxView = contentHost.Content as FrameworkElement;
textBoxView.Margin = new Thickness(0,0,0,0);
}
}
}