我想了解如何更新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