[英]Update Textbox control bound to a property
我需要更新綁定到屬性的TextBox
。 以我實施的方式,它工作正常。 這是代碼
private double foo;
public double Foo
{
get { return foo; }
set
{
foo = value;
RaisePropertyChanged(() => Foo);
}
}
但是現在我需要從另一個屬性更新該屬性的值,並且綁定到Foo的TextBox
不會更新。 這是代碼
private string foo1
public string Foo1
{
get { return foo1; }
set
{
foo1 = value;
foo = 4; // Updating the Foo property indirectly
RaisePropertyChanged(() => Foo);
RaisePropertyChanged(() => Foo1);
}
}
我必須以這種方式更新屬性Foo的值,因為Foo和另一個屬性會相互更新,因此我無法直接更新屬性,因為我屬於無窮遞歸。
問題是,當我更改屬性foo的值時,如何更新綁定到Foo屬性的TextBox
?
我想說您應該在Foo1
設置器中更新公共成員Foo
。 這將導致RaisePropertyChanged
事件為Foo
觸發。
private string foo1
public string Foo1
{
get { return foo1; }
set
{
foo1 = value;
Foo = 4;
RaisePropertyChanged(() => Foo1);
}
}
您可以調用RaisePropertyChanged(() => Foo);
每當您更新私有字段foo
,但是除非有充分的理由不使用Foo
屬性,否則我總是會在foo
使用它。 set
的目的是在屬性值更改時運行該代碼。 我認為,設置私有字段會繞過set
中違反此意圖的代碼。
編輯
另外,如果您只想調用RaisePropertyChanged
並在Foo1
更改時 (不必每次調用setter時) 更改 Foo
的值,只需添加一個檢查以查看該值是否已更改。 這將解決您的遞歸問題。
set
{
if(foo1 != value)
{
foo1 = value;
Foo = 4;
RaisePropertyChanged(() => Foo1);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.