我真的愛上了整個.Net數據綁定方案......但顯然還是有一些問題。假設我的類有一個名爲Susan
的double類型成員變量。那麼有似乎沒有綁定Susan
到一個文本框SusanText
直接的方式,因爲綁定看起來像這樣C#數據綁定類變量
SusanText.DataBindings.Add("Text",datasource,"Property")
而且Susan
是不是一個性質。所以我可以讓Susan
成爲一個公共財產,但這有點臭...如果我想保持Susan
隱藏? (我想我可以讓Susan
成爲某個內部類的私人實例的公共屬性......但是這對於一點點雙重工作來說有很多工作。)但是,我遇到了一個更大的問題,所以爲了爭論起見,讓我們繼續並做到這一點:
private double Susan_;
public double Susan{ get; set;}
...
SusanText.DataBindings.Add("Text",this,"Susan")
然後,一切似乎按預期工作。如果我改變SusanText
,則Susan
相應地改變。但是,當我直接更改Susan
時,問題就出現了。我想要自動更新SusanText
。所以我懷疑我需要使Susan
成爲實現某種IBindable接口的double的子類,以便如果Susan
的數據綁定爲SusanText
,則說明相應的事件已註冊,並且Susan
會在修改後通知其他人。
要讓Susan
做我想讓她做的事情,最簡單的方法是什麼?
謝謝!
「你不能使用自動實現的屬性」好了,你可以,你就必須設置火後INPC財產。似乎有點奇怪,但它有時候是一種有用的模式,比如當你想要將多個屬性作爲僞事務的一部分來更新時。 – Will 2010-07-01 17:02:10
@你可以 - 但是有一個消費類(B)在數據綁定類(A)上調用一個方法,使(A)引發一個事件,發出腥味。 .NET中的事件是特殊的代表,因爲它們只是有意從課堂內部被解僱 - 需要外部組件來觸發事件,這是乞求人們忘記的事情。海事組織最好做額外的工作,並讓數據綁定班能夠提高自己的事件。 – STW 2010-07-01 17:06:37
@stw只是一個選項,只是一個選項。無論如何,我都會使用DependencyObjects。更容易綁定的屬性。 – Will 2010-07-01 17:09:46