WPF:根据其他列中的其他多个值设置单元格颜色?

时间:2014-02-14 21:43:00

标签: wpf

我想更改Abs(Diff)列。这必须是在Abs(Diff)中,因为观众想要这样看。

 ID  | TYPE| CURRENT VALUE | TARGET       | ABS(Diff)
  1  | Sell| 10            |  11          | 1        --> Color Red
  2  | Sell| 11            |  10          | 1        --> Color Green
  3  | BUY | 10            |  9           | 1        --> Color Green
  4  | BUY | 10            |  11          | 1        --> Color Red

意思是: 第1行:我有一件待售的物品。当前市场价值是10,我希望至少卖出(目标)11。这不符合我的要求。对于Abs(Diff)

,单元格中的颜色应为红色

我看过这个。 Change DataGrid cell colour based on values  但这似乎只是一个价值。我如何看待多列?

2 个答案:

答案 0 :(得分:3)

您可以添加名为bool的{​​{1}}属性,表示IsPositive值是正还是负。也许是这样的:

ABS(Diff)

然后您需要执行此操作以确保在public bool IsPositive { get { return Diff >= 0; } } 值更改时在UI中更新它:

Diff

然后你能够做这样的事情(改编自你的链接问题中的例子):

public double Diff 
{
    get { return diff; }
    set
    {
        diff = value;
        NotifyPropertyChanged("Diff");
        NotifyPropertyChanged("IsPositive");
    }
}

答案 1 :(得分:2)

  

但这似乎只是一个价值。我怎么看多重   列?

如果这是“唯一”问题,您应该在ViewModel public bool ShouldColor中创建另一个属性,并在那里拥有所需的逻辑。

或者,您可以使用MultiBinding

来实现这一目标