扩展控制值未从 UI 设置
Extended control value is not setting from UI
您好,我正在尝试扩展 TextBox 使用,它在我的代码中扩展了一个。在扩展控件中,默认会trim开始和结束。
我试过的代码
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
这就是为什么我的控件不会转到 setter 以及为什么我得到 Null 结果
注意:它在 UI 中显示正确的字符串,我知道我可以在代码中维护它。但我需要这样。
如果你想要 trim 文本,你可以覆盖 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
属性没有意义。
您好,我正在尝试扩展 TextBox 使用,它在我的代码中扩展了一个。在扩展控件中,默认会trim开始和结束。
我试过的代码
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
这就是为什么我的控件不会转到 setter 以及为什么我得到 Null 结果 注意:它在 UI 中显示正确的字符串,我知道我可以在代码中维护它。但我需要这样。
如果你想要 trim 文本,你可以覆盖 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
属性没有意义。