我之前的问题似乎无法得到解答,所以我会自己提出建议。我正在寻找的功能是,当单元格中的数据被编辑时,让数据网格更改单元格的前景色(甚至背景色)。
我的模型大致如下:
Public class Shipment : PropertyChangedBase
{
#region Fields
private ShippingService.Shipment.lbnshipment _localShipment;
private ShippingService.Shipment.lbnshipment _originalShipment;
#endregion
#region Properties
public int ShipmentID
{
get { return _localShipment.ShipmentID; }
set
{
if(value != _localShipment.ShipmentID)
{
_localShipment.ShipmentID = value;
NotifyOfPropertyChange(() => ShipmentID);
}
}
}
public Shipment(ShippingServices.Shipment.lbnShipment localshipment)
{
_originalShipment = localshipment;
_localShipment = localshipment;
}
//This Section is my best guess solution, but it just a guess
public Color HasChanged(string Property)
{
switch(Property)
{
case "ShipmentID":
if(_localShipment.ShipmentID != _originalShipment.ShipmentID)
{
return Colors.Red;
} else {
return Colors.Black;
}
break;
}
}
}
我已经剥离了大部分属性,HasChanged现在纯属虚构,但我希望能够将DataGridTextColumn的Foreground(或背景,如果可能的话)绑定到这个HasChanged方法,并且以某种方式传递当前调用该方法的参数。
<DataGridTextColumn Header="ShipmentID" Binding="{Binding ShipmentID}" Foreground="{Binding HasChanged}" />
我希望有一个巧妙的方法可以让绑定知道哪个属性已更改,就像IDataErrorInfo允许每个属性都绑定验证一样。虽然我不知道它在后台是如何运作的。
IMultiValueConverter
,将当前视图模型的属性和该视图模型副本的属性绑定起来。然后在转换器内部验证这些属性是否相等,并返回特定的颜色。 - Herdo