When databinding my xaml to some data I often use the ‘get’ part of a property to do some logic. Like giving to sum of totals of a list or a check if something is positive.
For example:
public List<SomeClass> ListOfSomeClass{get;set;} public double SumOfSomeClass { get { return ListOfSomeClass.Sum(s => s.Totals); } } public bool SumPositive { get { if(SumOfSomeClass >= 0) return true; else return false; } }
This way I can bind to SumPositive and SumOfSomeClass. Is this considered good practice? Even if it gets more complex than this? Or would it be better call a method and return the outcome? What about calls to another class or even a database?
Property getters are expected to be fast and idempotent (i.e. no destructive actions should be performed there). Though it’s perfectly fine to iterate over an in-memory collection of objects, I wouldn’t recomment doing any kind of heavy lifting in either get or set parts. And speaking of iterating, I’d still cache the result to save a few milliseconds.