伙计,如果我的XAML中有2个数字更新,就像这样
<Input:SfNumericUpDown Grid.Column="1" Margin="10,0,10,0" Value="{Binding CompoundQty}" ValueChanged="SfNumericUpDown_ValueChanged"/>
<Input:SfNumericUpDown Grid.Column="4" Margin="10,0,10,0" Value="{Binding ResultQty}" Tag="{Binding ItemID}" />
我希望根据第一个numericupdown值更改第二个numericupdown值。 我试着将它放在Code中。
private void SfNumericUpDown_ValueChanged(object sender, Syncfusion.UI.Xaml.Controls.Input.ValueChangedEventArgs e)
{
var numCompoundQty = (SfNumericUpDown)sender;
foreach(var row in _entityEdited.ListCompoundDisplay)
{
if(row.ItemID == Convert.ToInt32(numCompoundQty.Tag))
{
row.CompoundQty = Convert.ToDecimal(numCompoundQty.Value);
row.ResultQty = Convert.ToDecimal(numDispenseQty.Value) * row.CompoundQty;
break;
}
}
}
但它不起作用,你们可以帮助我解决问题吗?
答案 0 :(得分:2)
尝试在两个属性上引发NotifiyPropertyChanged事件。
如果没有,Binding Engine无法检测到值更改,而不会更新您的值。
答案 1 :(得分:2)
您在这里遇到问题,因为您正在尝试引用一个名为&#34; numDispenseQty&#34;的元素,您无法访问该元素(假设它是在DataTemplate中)。而不是处理&#34;值已更改&#34; event,您应该使用对视图模型的双向绑定:
<Input:SfNumericUpDown Value="{Binding CompoundQty,Mode=TwoWay}" />
现在将更新逻辑放入&#34; CompoundQty&#34;的设置器中。财产,例如:
public double CompoundQty
{
get { return _compoundQty; }
set
{
_compoundQty = value;
UpdateResultQty();
RaisePropertyChanged("CompoundQty");
}
}
private void UpdateResultQty()
{
ResultQty = DispenseQty * CompoundQty;
}
请注意(如@sslazio1900注释)您的视图模型类必须实现INotifyPropertyChanged
,并在属性更改时引发PropertyChanged
事件(这是视图知道更新自身的方式)。 / p>