我有一个依赖属性“区”为: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