MVVM 在其他文本框上添加两个文本框插入值
本文关键字:文本 两个 插入 添加 其他 MVVM | 更新日期: 2023-09-27 18:34:47
大家好,我有一个问题,我必须添加两个文本框浮点数,并将结果放在另一个文本框中,而无需使用代码隐藏两个文本框是 bindate 到他们的属性。提前感谢大家的帮助
视图模型将包含三个属性。前两个属性将双向绑定到输入文本框。第三个属性将返回第一个和第二个属性的总和,它绑定到仅用于输出的第三个文本框。
当您编辑第一个或第二个属性时,它们也会通知third property changed
public class ViewModel
{
private string _firstText;
public string FirstText
{
get {return _firstText; }
set { _firstText = value; RaisePropertyChanged("FirstAndSecondText"); }
}
private string _secondText;
public string SecondTExt
{
get {return _secondText; }
set { _secondText= value; RaisePropertyChanged("FirstAndSecondText"); }
}
public string FirstAndSecondText {get {return FirstText + SecondText; }}
}
在 xaml 中:
<TextBox Text={Binding FirstText, Mode=TwoWay} />
<TextBox Text={Binding SecondText, Mode=TwoWay} />
<TextBox Text={Binding FirstAndSecondText} />
RaisePropertyChanged
不是内置方法。必须实现 INotificationProperty 接口或继承特殊的帮助程序类,如 MVVM Light 工具包中的ViewModelBase
。
这里怎么做:首先在视图模型中定义三个浮点属性:
private float _floatOne;
public float FloatOne
{
get
{
return _floatOne;
}
set
{
if (_floatOne == value)
{
return;
}
_floatOne = value;
OnPropertyChanged();
Result = _floatOne + _floatTwo;
}
}
private float _floatTwo;
public float FloatTwo
{
get
{
return _floatTwo;
}
set
{
if (_floatTwo == value)
{
return;
}
_floatTwo = value;
OnPropertyChanged();
Result = _floatOne + _floatTwo;
}
}
private float _result;
public float Result
{
get
{
return _result;
}
set
{
if (_result == value)
{
return;
}
_result = value;
OnPropertyChanged();
}
}
OnPropertyChanged
方法将通知UI任何更改,这是实现INotifyPropertyChanged
接口的结果,其次,在您的 Xaml 中将这些属性绑定到您的文本框中,如下所示:
<StackPanel>
<TextBox Text="{Binding FloatOne,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
<TextBox Text="{Binding FloatTwo,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
<TextBox Text="{Binding Result,Mode=OneWay}" IsReadOnly="True"/>
</StackPanel>
感谢您对我的帮助:
public double Ricambi
{
get { return _Ricambi; }
set
{
_Ricambi = value; _Totale = _Ricambi + _Manifattura; RaisePropertyChanged("Ricambi"); RaisePropertyChanged("Totale");
}
}
public double Manifattura
{
get { return _Manifattura; }
set { _Manifattura = value;_Totale = _Ricambi + _Manifattura; RaisePropertyChanged("Manifattura"); RaisePropertyChanged("Totale"); }
}
public double Totale
{
get { return _Totale; }
}