我想了解如何更新UI,如果我有一个只读属性是依赖于另一个属性,以便更改一个属性更新两个UI元素(在这种情况下一个文本框和一个只读的文本框,例如:WPF INotifyPropertyChanged为链接的只读属性
public class raz : INotifyPropertyChanged
{
int _foo;
public int foo
{
get
{
return _foo;
}
set
{
_foo = value;
onPropertyChanged(this, "foo");
}
}
public int bar
{
get
{
return foo*foo;
}
}
public raz()
{
}
public event PropertyChangedEventHandler PropertyChanged;
private void onPropertyChanged(object sender, string propertyName)
{
if(this.PropertyChanged != null)
{
PropertyChanged(sender, new PropertyChangedEventArgs(propertyName));
}
}
}
我的理解是,栏将不会自动更新UI时富被修改请告诉我正确的方式做到这一点
我不明白你为什么认为这是特别丑陋的火灾onPropertyChanged(这,“酒吧”)?我可以看到,如果.bar依赖于3个属性,并且你在所有三个setter中都有这个调用,但是他可以将计算从.bar的property-getter移到一个调用update的计算方法中方法。 – Goblin 2010-08-26 19:16:59
这是丑陋的,因为您将属性B的属性B的适当行为放置在属性A的设置器中所需的逻辑。可以有任何数量的属性取决于A的值。必须修改A以满足其他属性的需要使用A不明显且不可扩展。 – dthorpe 2010-08-26 19:41:04
更清洁的解决方案应该是有某种方式来指示B依赖于A,并且当A改变B时也应该指示值改变。上面的第二个选项,以听取自己的PropertyChanged事件,是在这种风格,但听你自己的事件也有点纠结。 – dthorpe 2010-08-26 19:45:17