#928 – TextBox.MinLines Doesn’t Size Properly on Startup

When you give the MinLines property of a TextBox some value, you’ll find that the TextBox’s size isn’t adjusted to fit the minimum number of lines until after the user enters some text into the TextBox.  The TextBox will not initially be sized properly at startup.

You can work around this by doing the following:

  • Bind the Text property to some string-based property
  • At startup, set the value of the bound property to some text (e.g. a single space)
        <TextBox HorizontalAlignment="Stretch"
                 Margin="5"
                 Text="{Binding SomeText}"
                 MaxLines="3" MinLines="3"
                 VerticalScrollBarVisibility="Auto"/>

 

        public MainWindow()
        {
            this.InitializeComponent();
            this.DataContext = this;
            SomeText = " ";
        }

        private string someText;
        public string SomeText
        {
            get { return someText; }
            set
            {
                if (value != someText)
                {
                    someText = value;
                    RaisePropertyChanged("SomeText");
                }
            }
        }

928-001
You could also just manually set the TextBox to the desired size using the Height or MinHeight property.