我正在使用 MVVM 作为中继命令和数据绑定在 C# WPF 中创建一个简单的数据库应用程序。对于我使用的数据库内容的内存存储ObservableCollection
,它绑定到 Datagrid,如下所示:
<DataGrid ItemsSource="{Binding Path=Softwares, Mode=OneWay}" SelectedItem="{Binding Path=SoftwareSelection, Mode=TwoWay}">
选择项目时,用户可以选择对其进行编辑。对于编辑,打开一个带有一堆文本框的表单,其中包含给定实体的数据。使用 验证所有字段IDataErrorInfo
,除非所有文本框都有效,否则不会启用 ok 按钮,因此无法将更改保存到集合和数据库中。
以下是示例文本框的外观:
<TextBox Text="{Binding Name, Mode=TwoWay, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True}"/>
但棘手的部分是,如果我更改文本框中的某些值然后关闭窗口,新值会传播到ObservableCollection
我不想这样做的 . 你有什么想法,如何防止这种行为?我希望只有在单击按钮后才能进行数据绑定。否则数据绑定工作得很好,所以按钮(禁用/启用)在单击后启用和反映对数据库和集合的更改。两个视图都由不同的 ViewModel 提供服务,视图之间的数据通过触发事件传递。
我试图添加到DataGrid
UpdateSourceTrigger=Explicit
ItemsSource 绑定,但没有帮助。也许,我错过了一些应用程序逻辑?
非常感谢您的帮助。