Hi Ben,
Your problem is probably that you have not told Flex when it needs to
fire the binding. The binding mechanism works by broadcasting events
from the setter methods of bindable properties. If there is no direct
setter involved, then Flex does not automatically know to refresh the
data to the binding destination.
The best way I know around this issue is to specify the event type
you want to associate with a change to your calculated value, and
then fire that event when ever any of the arguments to that method
change.
[Bindable("enabledParamsChanged")]
private function isEnabled():Boolean {
if (A) … if (B) … etc
}
Then you need to say something like
private function set valueOfA (arg) {
// Change A here
dispatchEvent(new Event("enabledParamsChanged"));
}
private function set valueOfB (arg) {
// Change B here
dispatchEvent(new Event("enabledParamsChanged"));
}
Now Flex knows to fire your isEnabled binding when the arguments to
the calculation are altered.
Cheers,
Lach
On 29/11/2006, at 1:13 AM, ben.clinkinbeard wrote:
There was a similar question asked here recently but my needs are
different so I am starting a new thread. My needs are as follows: I
have a ComboBox whose enabled state needs to be determined by several
factors, thus the need for a custom method. The problem is that this
doesn't seem to work, no matter how I try it. Am I missing something
or is this just not possible (meaning I have to set a property and
bind to that)? Fake sample code below:
[Bindable]
private function isEnabled():Boolean
{
if(conditionA)
{
if(conditionB)
{
return true;
}
else
{
return false;
}
}
}
<mx:ComboBox id="cb" enabled="{isEnabled()}"/>
Thanks,
Ben