8

テキストボックスの水平方向のパディングを最小限に抑えたい場合があります。

snoop を使用すると、テキストボックスが複数のサブコントロールで構成されていることがわかりました。そのうちの 1 つは、マージンが 2,0,2,0 の TextBoxView です。

TextBoxView は wpf の内部コンポーネントであり、パブリック API はありません。

「内部パディング」を取り除くにはどうすればよいですか??

4

3 に答える 3

9

外側のマージンを -2,0,-2,0 に設定して、パディングを補正します。

于 2013-11-14T13:56:03.440 に答える
3

その内部パディングを削除するカスタム コントロールを作成しました。

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);
        }
    }       
}
于 2015-02-21T19:19:33.737 に答える