Расширенное значение управления не устанавливается из пользовательского интерфейса - PullRequest
0 голосов
/ 17 июня 2019

Привет, я пытаюсь расширить использование TextBox, которое расширяет один в моем коде. в расширенном элементе управления, по умолчанию, он обрезает начало и конец.

код, который я пробовал

public class TextboxTrimSpaceing : TextBox
    {

        private string myVar;

        new public string Text
        {
            get { return myVar; }
            set { myVar = value.TrimEnd().TrimStart(); }//Control is not coming here
        }

    }

UI

 <local:TextboxTrimSpaceing x:Name="TrimSpaceing" Text="   avi  aaa   "></local:TextboxTrimSpaceing>

  var i = TrimSpaceing.Text; //Getting Null

Вот почему мой контроль не переходит к сеттеру и почему я получаю нулевой результат Примечание: в интерфейсе отображается правильная строка, и я знаю, что могу поддерживать ее в коде. но мне нужно вот так.

1 Ответ

1 голос
/ 17 июня 2019

Если вы хотите обрезать текст, вы можете переопределить метод OnTextChanged:

public class TextboxTrimSpacing : TextBox
{
    private bool _trim = true;
    protected override void OnTextChanged(TextChangedEventArgs e)
    {
        base.OnTextChanged(e);
        if(_trim)
        {
            _trim = false;
            Text = Text?.Trim();
            _trim = true;
        }
    }
}

Нет смысла определять новое свойство Text.

...