我有一個依賴屬性「區」爲:Math.Round與依賴屬性,怪異行爲
public double Area
{
get { return Math.Round((double)this.GetValue(AreaProperty),2); }
set { this.SetValue(AreaProperty, value); }
}
我使用的代碼和視覺效果添加更新的區域增加了一些視覺效果。 我希望將值舍入到小數點後兩位。
drawQuads(builder); //Updating area in these three methods
extrudeQuads();
drawSidesAndBottoms(builder);
Area *= 1; //this is required so that the roundoff method can work (Why ?)
正如你可以看到財產的getter是四捨五入的價值。但是,如果在調用這三種方法之後,我將「區域」乘以1或其他值,則問題四捨五入是行不通的。
請說明是什麼原因,爲什麼我需要乘以1?
編輯:
其實這些方法所使用的語句如更新面積:
Area += someFormula;
是不是它調用的getter?即使它不是,最後我在標籤中顯示值(實際上將此屬性綁定到標籤Content屬性,因此Area更改Label.Content也會更新)。
你能否確認'Area'的值正在改變爲正確的值(雖然沒有舍入)並且get/set方法總是被調用? – keyboardP
實際上,您可能需要的是一種存儲具有完全精度值的屬性,另一種爲綁定目的進行四捨五入的只讀屬性。您也可以使用綁定轉換器進行舍入。 –
@keyboardP是的,它似乎是這樣(我不知道,只是學習),請看編輯。 – SagarDabas