私は依存関係プロパティ「Area」を次のように持っています:
public double Area
{
get { return Math.Round((double)this.GetValue(AreaProperty),2); }
set { this.SetValue(AreaProperty, value); }
}
コードを使用していくつかのビジュアルを追加し、ビジュアルが追加されると領域を更新しています。値を小数点以下 2 桁に四捨五入したかったのです。
drawQuads(builder); //Updating area in these three methods
extrudeQuads();
drawSidesAndBottoms(builder);
Area *= 1; //this is required so that the roundoff method can work (Why ?)
ご覧のとおり、プロパティのゲッターは値を四捨五入しています。しかし、問題は、これら 3 つのメソッドを呼び出した後に「領域」に 1 などを掛けない限り、丸めが機能しないことです。
理由を説明してください。なぜ 1 を掛ける必要があるのですか?
編集 :
実際、これらのメソッドは次のようなステートメントを使用して Area を更新しています。
Area += someFormula;
ゲッターを呼び出していませんか?そうでない場合でも、最終的にラベルに値を表示しています(実際には、このプロパティをラベルの Content プロパティにバインドして、Area が Label.Content も更新されるように変更します)。