如何更改TextBox.文本不丢失银光装订
本文关键字:何更改 TextBox 文本 | 更新日期: 2023-09-27 17:57:54
我有一个绑定到类属性的文本框
<TextBox x:Name="TradeTextBox"
Text="{Binding Path=Entier,
Mode=TwoWay,
NotifyOnValidationError=True,
ValidatesOnExceptions=True,
UpdateSourceTrigger=Explicit}"/>
这是我的财产:
private string _entier;
public string Entier
{
get { return _entier; }
set
{
if (!Regex.IsMatch(Entier.Trim(), NumberPattern, RegexOptions.IgnoreCase))
throw new ArgumentException("can only have numbers not characters");
_entier = value;
OnPropertyChanged("Entier");
}
}
正如您所看到的,我正在使用异常验证并通知属性已更改现在,我的问题是:当我试图从主类构造函数初始化textBox.Text
时,文本显示为空。。。
我试过这样做,但有些方法不起作用:
public MyClass()
{
TradeTextBox.Text = "30";
TradeTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource();
}
你能帮我吗?请弄清楚为什么在我运行应用程序时textBox.text
没有设置为"30"?
我的意思是,看起来像是将文本设置为30,然后从源代码中获取值,而不是30。
为什么不让你的源价值为30呢?
编辑-取决于你的源文件,它将只是
sourcevalue=textbox.text
如果你告诉我更多关于你的消息来源,我可以提供一个更好的答案。
您有几种方法可以设置默认值:
在xaml(-binding)中声明性地:
<TextBox x:Name="TradeTextBox"
Text="{Binding Path=Entier,
TargetNullValue='30',
Mode=TwoWay,
NotifyOnValidationError=True,
ValidatesOnExceptions=True,
UpdateSourceTrigger=Explicit}"/>
作为Viewmodel属性的默认值:
private string _entier = "30";
public string Entier
{
get { return _entier; }
set
{
if (!Regex.IsMatch(Entier.Trim(), NumberPattern, RegexOptions.IgnoreCase))
throw new ArgumentException("can only have numbers not characters");
_entier = value;
OnPropertyChanged("Entier");
}
}
最后。。。使用一些代码(不会影响现有的绑定,但我不确定这是否真的有必要):
public MyClass()
{
InitializeComponent();
}
public void CheckBoxChecked()
{
SetBinding(TagProperty, new Binding("Text"){Source=TradeTextBox, Mode=TwoWay});
Tag="30";
}