wpf,如何限制TextBox的MaxLength?

dou*_*ull 1 c# wpf

<TextBox Height="?" Width="?" AcceptReturn="true" />
Run Code Online (Sandbox Code Playgroud)

高度=随机; 宽度=随机; 例如,高度为60,宽度为100.如何控制文本的输入长度小于TextBox的大小

VVS*_*VVS 6

使用 MaxLength

编辑:

等等,什么?您想要将字符数限制为TextBox的宽度吗?为什么?

EDIT2:

您可以使用Graphics.MeasureString测量字符串的长度.这是一个执行您想要的扩展方法:

public static class TextBoxExtension
{
    public static int VisibleCharCount(this textBox textBox)
    {
        int count = 0;

        do {
            count++;
            var testString = new string('X', count);
            var stringWidth = System.Drawing.Graphics.MeasureString(testString, textBox.Font);                
        } while (stringWidth < textBox.Width);

        if (stringWidth == textBox.Width) 
            return count;
        else
            return count-1;
    }
}
Run Code Online (Sandbox Code Playgroud)

像这样使用它:

myTextBox.MaxLength = myTextBox.VisibleCharCount();
Run Code Online (Sandbox Code Playgroud)

EDIT3:

如果您的TexBox是MultiLine并且您还想考虑高度,则可以使用带有Size的MeasureString的重载.我把它留给你来相应地修改我的例子.