вы можете напрямую связать свойства visible и includeInLayout в определении сетки MXML либо с логическим значением, либо с выражением, которое оценивается как логическое значение.Единственным ограничением является то, что вы должны быть в состоянии выразить оценку как одно утверждение.Однако вы можете использовать составные условия, которые вы просто не можете сделать, например, сохранить переменную, а затем проверить ее.Вы можете выполнить это просто так:
<mx:DataGrid visible="{myObject=='state1'}" includeInLayout="{myObject=='state1'}"/>
<mx:DataGrid visible="{myObject=='state2'}" includeInLayout="{myObject=='state2'}"/>
<mx:DataGrid visible="{myObject=='state3'}" includeInLayout="{myObject=='state3'}"/>
Обратите внимание, что это все равно приведет к созданию всех трех сеток в результате создания их родительского контейнера.В качестве альтернативы вы можете использовать состояния для добавления или удаления определенных сеток ... в конечном счете, лучший вариант - создать одно определение сетки и изменить его свойства условно в зависимости от состояния.Есть много способов решить эту проблему, но некоторые лучше, чем другие, поэтому рассмотрите возможность просмотра Flex во время недельного видео и жизненного цикла UIComponent, чтобы убедиться, что вы понимаете последствия своего выбора.
Также обратите внимание, если вам нуженсложное условие, поскольку вы находитесь в XML, вам нужно будет использовать
&
для каждого амперсанда, например
<mx:DataGrid visible="{myObject=='state3'&&someOtherThing=='whatever'}" includeInLayout="{myObject=='state3'&&someOtherThing=='whatever'}"/>
Последнее редактирование, которое я рекомендуюиспользуя это: http://livedocs.adobe.com/flex/3/html/help.html?content=using_states_3.html