Двунаправленная привязка JavaFX - FXML - PullRequest
0 голосов
/ 11 июня 2018

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

FXML:

<TextField text="${controller.userName}" />

контроллер:

private final StringProperty userName = new SimpleStringProperty();
public StringProperty userNameProperty() {
    return userName;
}

Используя эту стратегию, я не могу установить значение текстового поля из пользовательского интерфейса.

Удаление привязки из FXMLдокумент и добавление привязки на стороне контроллера работает нормально:

FXML:

<TextField fx:id="userNameTextField" />

контроллер:

private final StringProperty userName = new SimpleStringProperty();

@FXML
private TextField userNameTextField;

@FXML
void initialize() {
    userNameTextField.textProperty().bindBidirectional(userName);
}

но мне не нравится это решение, потому что яхочу развязать контроллер и FXML.

Мой вопрос: возможно ли иметь двунаправленную привязку без установки привязки на стороне контроллера?

Каков наилучший шаблон проектирования для соединения моей модели с моим уровнем представления?

...