伙计们,如果我在我的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}" />我想要根据第一个数值来改变第二个数值。我试着把这个写在密码后面。
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;
}
}
}但是这不管用,你们能帮我一下吗?
发布于 2014-08-19 20:35:51
您将在这里遇到问题,因为您试图引用一个名为"numDispenseQty“的元素,您无法访问该元素(假设它在DataTemplate中)。您应该使用与视图模型的双向绑定,而不是处理“值更改”事件:
<Input:SfNumericUpDown Value="{Binding CompoundQty,Mode=TwoWay}" />现在,将更新逻辑放入"CompoundQty“属性的setter中,例如:
public double CompoundQty
{
get { return _compoundQty; }
set
{
_compoundQty = value;
UpdateResultQty();
RaisePropertyChanged("CompoundQty");
}
}
private void UpdateResultQty()
{
ResultQty = DispenseQty * CompoundQty;
}请注意(正如@sslazio1900所指出的),您的视图模型类必须实现INotifyPropertyChanged,并在属性发生更改时引发PropertyChanged事件(视图知道如何更新自身)。
发布于 2014-08-19 10:03:21
尝试在这两个属性上引发NotifiyPropertyChanged事件。
否则,绑定引擎将无法检测值更改,因为您将永远不会更新您的值。
https://stackoverflow.com/questions/25379993
复制相似问题