说我有一些属性
public int redBalls { get; set; }
public int blueBalls { get; set; }
我现在想要一个totalBalls属性,它将添加两个。
我会这样做吗?
public int totalBalls { get { return redBalls + blueBalls; } }
我正在尝试这个,但结果是0
*编辑,我已经和我的首席开发人员交谈了,因为无论访问的是什么,totalBalls都没有收到redBalls或blueBalls更改的通知,所以它不会重新计算这些值
所以我必须做OnPropertyChanged("total")
答案 0 :(得分:1)
为你写了一个测试...这对我来说很成功。
[Test]
public void SO()
{
var testing = new Testing();
Assert.AreEqual(0, testing.RedBalls);
Assert.AreEqual(0, testing.BlueBalls);
Assert.AreEqual(0, testing.TotalBalls);
testing.RedBalls = 2;
testing.BlueBalls = 4;
Assert.AreEqual(2, testing.RedBalls);
Assert.AreEqual(4, testing.BlueBalls);
Assert.AreEqual(6, testing.TotalBalls);
}
class Testing
{
public int RedBalls { get; set; }
public int BlueBalls { get; set; }
public int TotalBalls { get { return RedBalls + BlueBalls; } }
}
答案 1 :(得分:0)
除了属性名称的大小写之外,您的代码没有任何问题,这纯粹是装饰性的。
totalBalls
将= 0,而redBalls
和blueBalls
的总和为0,显然,它们都将为0,直到它们被设置为其他值。
修改强>
您没有在OP或标记中提及DependecyProperty
,如果依赖属性绑定到totalBalls
属性,则不会知道totalBalls
是从其他属性计算的属性。
您应该扩展依赖项属性的定义,以便其元数据包含可以检测聚合更改的PropertyChangedCallback,而不是将简单类与WPF耦合。
答案 2 :(得分:0)
您必须实际设置红球/蓝球的值
class Balls
{
public int redBalls { get; set; }
public int blueBalls{ get; set; }
public int totalBalls{ get{ return redBalls + blueBalls; } }
}
void test()
{
// You must acutally set the value of redBalls/blueBalls
var balls = new Balls{ redBalls = 1, blueBalls = 2 };
Assert.AreEqual(3, balls.totalBalls);
}