Динамически изменять содержимое элемента

Хотя Transform позволяет изменять внешний вид элементов или групп элементов, могут возникнуть ситуации, когда потребуется переключаться между несколькими вариантами поведения в зависимости от какого-либо условия. Это аналогично оператору switch или оператору if…else в других языках программирования.

Например, вы можете захотеть отображать разный фон для раннего утра, утра, обеда, дня, вечера и ночи.

Condition операторы в формате циферблата позволяют включать различные части сцены циферблата в зависимости от оценки выражений, например:

<Condition>
    <Expressions>
        <Expression name="is_early_morning">
            <![CDATA[[HOUR_0_23] >= 6 && [HOUR_0_23] < 8]]
        </Expression>
        <Expression name="is_morning">
            <![CDATA[[HOUR_0_23] < 12]]
        </Expression>
        <!-- Further expressions -->
    </Expressions>
    <Compare expression="is_early_morning">
        <!-- Early morning content here -->
    </Compare>
    <Compare expression="is_morning">
        <!-- Morning content here -->
    </Compare>
    <!-- Further Compare elements -->
    <!-- The "else" case -->
    <Default>
        <!-- content -->
    </Default>
</Condition>

Несколько важных замечаний относительно условий:

  1. Используется первый элемент Compare , для которого expression true , остальные игнорируются.
  2. В силу формата XML зачастую проще всего обернуть определение выражения в элемент CDATA , как показано здесь, поскольку это позволяет избежать необходимости экранирования XML с помощью элементов сущностей, таких как &gt; и &amp; .
  3. Структуры Condition могут быть вложенными.