首页 > 解决方案 > QML 用户控件中的双向绑定

问题描述

我正在制作一个具有属性的用户控件,我使用函数对其进行修改。该属性绑定到 Main.qml 文件中的另一个属性。在实际项目中,它绑定到 ViewModel 的属性。我需要有一个双向绑定,允许我从 qml 视图更改 ViewModel 的属性和从视图模型更改视图的属性。

主要.qml:

property int myProperty: 0

Column {
    MyControl {
        value: myProperty
    }
    MouseArea {
        width: 200; height: 100
        onClicked: myProperty = 0
    }
}

MyControl.qml:

Item {
    id: root
    property int value: 0
    Row {
        MouseArea {
            width: 100; height: 100
            onClicked: root.value++
        }
        MouseArea {
            width: 100; height: 100
            onClicked: root.value--
        }
    }
}

但事实上,当我用 更改 MyControl 的value属性时root.value++,它会破坏绑定并且更改停止在属性之间传递。

有没有办法以声明的方式实现它,而无需通过 ...Changed 信号进行交叉设置?

标签: qtmvvmqmlqt-quick

解决方案


推荐阅读