TornadoFX envuelve las classs de dominio en ItemViewModel

Tengo una class de dominio

class UserItem(var simpleItem: Item, var id: String, var status: String, var price: Int) { var upperLimit: Int = 0 var lowerLimit: Int = 0 /* methods here */ } 

y una class que almacena estos objects

 class Trades { val saleableItems: ArrayList<UserItem> = ArrayList() val soldAwaitingItems: ArrayList<UserItem> = ArrayList() /* methods */ } 

saleableItems y soldAwaitingItems se actualizan desde dentro de Trades

Quiero mostrar artículos saleableItems usando TableView para poder enlazar datos y vistas sin convertir properties a properties TornadoFX, así que envolví UserItem a ItemViewModel

 class UserItemModel(uItem: UserItem) : ItemViewModel<UserItem>() { val simpleItem = bind { item?.observable(UserItem::simpleItem) } val id = bind { item?.observable(UserItem::id) } val status = bind { item?.observable(UserItem::status) } val price = bind { item?.observable(UserItem::price) } val upperLimit = bind { item?.observable(UserItem::upperLimit) } val lowerLimit = bind { item?.observable(UserItem::lowerLimit) } init { item = uItem } } 

¿Hay alguna forma de ajustar Trades a ItemViewModel<Trades> para que tenga algo así como

 class TradesModel : ItemViewModel<Trades>() { val saleableItems: ObservableList<UserItemModel> val soldAwaitingItems: ObservableList<UserItemModel> } 

y luego usarlo en View

 class TradesView : View("My View") { val tradesModel: TradesModel by inject() tableview(tradesModel.saleableItems) { column("Name", UserItemModel::simpleItem) column("Price", UserItemModel::price) column("Lower limit", UserItemModel::lowerLimit) column("Upper limit", UserItemModel::upperLimit) } } 

¿Has intentado algo como ésto?

 class UserItemModel(uItem: UserItem) : ItemViewModel<UserItem>() { // Same way you defined previously. } class TradesViewModel { val saleableItems: SimpleListProperty<UserItemModel>(FXCollections.observableArrayList()) val soldAwaitingItems: SimpleListProperty<UserItemModel>(FXCollections.observableArrayList()) } class TradesView : View("My View") { val tradesModel: TradesViewModel by inject() init { with(root) { tableview(tradesModel.saleableItems) { column("Name", UserItemModel::simpleItem) column("Price", UserItemModel::price) column("Lower limit", UserItemModel::lowerLimit) column("Upper limit", UserItemModel::upperLimit) } } } } 

Además, si su tabla es de solo lectura, es posible que pueda definir UserItemModel como una class de datos simple; no es necesario extender ItemViewModel ni realizar enlaces de properties.

  • Columnas de tabla dinámica
  • TornadoFX - eliminar elemento con ContextMenu hacer clic derecho
  • ¿Cómo puedo refactorizar una vista para permitir el filtrado de elementos vinculados a un observable ArrayList dentro de una aplicación tornadofx?
  • El text de la label no se actualiza aunque el hilo de la interfaz de usuario parece responder
  • TornadoFx: que realiza mejor FXML o type-CSS
  • El elemento TornadoFx ItemViewModel es nulo
  • Tornadofx tableview sincroniza dos tablas
  • TornadoFX filechooser
  • Tornadofx - controlando el object de la fila de la vista de tabla mientras construye
  • ¿Por qué mi escena es nula?
  • En TornadoFX, ¿cómo puedo separar layouts en diferentes classs y luego usarlos en el generador?