未通过UI设置扩展控件值

时间:2019-06-17 11:55:45

标签: c# wpf custom-controls

嗨,我正在尝试扩展在我的代码中扩展了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

这就是为什么我的控制权不交给二传手以及为什么我得到Null结果的原因 注意:它在UI中显示正确的字符串,我知道我可以在代码中维护它。但是我需要这样。

1 个答案:

答案 0 :(得分:1)

如果要修剪文本,可以覆盖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属性毫无意义。