这是我的实体类
items[i] = tempList[i]
这是我的视图模型类
public class Item
{
private int _stockIn;
private int _stockOut;
private int _newStock;
public int StockIn
{
get { return _stockIn; }
set
{
_stockIn = value;
OnPropertyChanged("StockIn");
}
}
public int StockOut
{
get { return _stockOut; }
set
{
_stockOut = value;
OnPropertyChanged("StockOut");
}
}
public int NewStock
{
get { return _newStock; }
set
{
_newStock = value;
OnPropertyChanged("NewStock");
}
}
}
这是xaml
public class ItemViewModel
{
private List<Item> _itemCollection;
public List<Item> ItemCollection
{
get { return _itemCollection; }
set
{
_itemCollection = value;
OnPropertyChanged("ItemCollection");
}
}
}
我已将 ItemCollection 列表绑定到数据网格。我在数据网格中有一个TextBox列,该文本框包含转换器,用于减去两个值(StockIn - StockOut)以获得剩余库存数量(转换器工作正常)。
此文本框值可以更新。
我想要做的是我想用更新的文本框值更新数据库。为此,我想将此文本框值绑定到 NewStock 属性。我怎样才能使用MVVM数据绑定
答案 0 :(得分:0)
我认为做一些&#34; business&#34;这不是一个好主意。转换器中的逻辑。您应该准备一个更好的视图模型。视图模型应包含具有剩余库存数量的附加属性的项目。 我不知道你想要实现什么,但看起来你可以进行一些计算(同时检索数据)以在NewStock属性中存储减去的值,并将其绑定到TextBox。
答案 1 :(得分:0)
除了在检索数据时进行计算外,您还可以添加一个只读的新属性,应用列表对象的两个属性的值。
public int NetStock
{get { return _stockIn - _stockOut; }}
由于绑定已经存在于您的库存项目中,并且存在其他值,您只需绑定到一个属性并显示净差异(或您需要的任何计算)。然后对“NetStock”进行标准单一绑定
但是,您注意到此字段应该是可编辑的,但是如何为COMPUTED值。您不能随意将编辑后的值应用于其中一个或另一个。所以看起来你的自定义绑定控件允许编辑输入或输出,这无论如何都会重新计算总网络。在这种情况下,我会更新您的其他属性以执行RaisePropertyChanged(“NetStock”),因此当更改任何一个时,NetStock值也会更新。