Трехстороннее связывание в пользовательском компоненте MXML (с использованием только mxml) - PullRequest
1 голос
/ 22 июня 2011

Я пытаюсь сделать это, используя только mxml, без тегов , хотя мне не обязательно нужно решение, которое состоит только из mxml.Это было скорее образовательным упражнением, чтобы посмотреть, смогу ли я сделать все это в mxml.

У меня есть пользовательский компонент, который имеет ползунок и текстовый ввод, и их свойства value / text связаны друг с другом.Я использую несколько свойств ползунка в моем компоненте, так что он может рассматриваться как слайдер.

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" verticalAlign="middle" horizontalGap="0">
   <mx:int id="value">{slider.value}</mx:int>
   <mx:int id="minimum">0</mx:int>
   <mx:int id="maximum">100</mx:int>
   <mx:int id="tickInterval">25</mx:int>
   <mx:Array id="labels">['0%','50%','100%']</mx:Array>

   <mx:HSlider id="slider" liveDragging="true" snapInterval="1" 
         value="{int(input.text)}" 
         minimum="{minimum}" 
         maximum="{maximum}" 
         tickInterval="{tickInterval}" 
         labels="{labels}"/>
   <mx:Spacer width="25"/>
   <mx:TextInput id="input" restrict="0-9" text="{slider.value}" maxChars="3" width="30"/>
   <mx:Label text="%"/>
</mx:HBox>

Обратите внимание, что свойство VALUE ползунка привязано к свойству TEXT поля ввода, и наоборотнаоборот.Двусторонняя привязка.Это позволяет пользователю перемещать большой палец или вводить в поле ввода, чтобы выбрать значение, и они остаются синхронизированными друг с другом.

Кроме того, свойство VALUE компонента привязано к свойству VALUE ползунка, так что значениеэтот компонент всегда будет содержать значение ползунка (чтобы компонент можно было использовать как ползунок).

Свойства ползунка также привязаны к свойствам компонента (мин, макс, отметки)

Проблема в том, что я хочу инициализировать значение ползунка из значения компонента, но значение ползунка уже привязано к вводу текста.Могу ли я также привязать его к компоненту?

В моем приложении будет что-то вроде этого:

<local:mycomponent minimum="20" maximum="80" labels="['20','50','80']" value="40"/>

Несколько вещей, которые я пробовал, не работали:

(1) У меня был обработчик инициализации.

<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" initialize="slider.value=value">

Это работало, если у моего приложения было

myslider.value = 40;

, но не работало, если у меня было

<local:mycomponent value="40"/>

(2) Я попробовал обработчик creationComplete

(3) Я попробовал mx: binding

<mx:Binding source="slider.value" destination="this.value"/>

Кажется, мне не хватает чего-то простого.

1 Ответ

0 голосов
/ 25 июня 2011

Обратите внимание на фигурные скобки:

<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" initialize="{slider.value=value}">

В скобках может быть любой код.Без них может быть только обработчик событий (функция).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...