gpt4 book ai didi

c# - 在*到达 View 模型之前拦截 UI 更改

转载 作者:行者123 更新时间:2023-11-30 18:18:33 26 4
gpt4 key购买 nike

问题:有什么方法可以在更改到达 View 模型之前拦截 UI 中的更改?具体来说,我需要一些可以与 ComboBox 配合使用的东西。有很多方法可以检测 UI 中的某些内容已更改,然后通过将其更改回来来“取消”(例如: this onethis one ),但这些方法都有以下两个缺点之一:

  1. 基础模型被更改然后又改回来,而不是真正取消更改。
  2. 取消发生在 View 模型中,因此用于取消的 UI 也必须位于 View 模型中。

背景: 我有一个带有 ComboBox 和一些 Foos 的表单。用户应该可以自由更改所选的 Foo(一旦选择了 Foo,他们不应被锁定以保留它),但更改所选的 Foo 可能会使用户选择的 View 模型中的其他一些设置无效。用户会收到一些警告,可能是一个消息框,说“你确定要更改 Foo 吗?”,选择不更改 Foo 应该会取消更改。更改所选 Foo 的值然后将其改回的问题在于,决定什么需要无效的逻辑应该与设置 VM 支持属性(可能是 NotifyPropertyChanged (Foo) 或就在它旁边),因此无论更改是否取消,其他设置都会失效。

解决我问题的正交问题:

  1. 我是否试图以一种不应该改变的方式改变 MVVM 范式?我是否应该寻找一种将取消 UI 移动到 UI 并在 View 模型中保留取消行为的方法?
  2. “改变然后再改变回去是行不通的”的说法不准确吗?在发生变回之后开始(或抑制)失效之后,是否有可以稍后 Hook 的地方?

最佳答案

没有人说您的 View 模型必须立即将每个更改转发给模型。

我会触发“你真的想改变这个吗?”来自 View 模型的对话框,如果用户回答"is",则更改模型(并在必要时使其他属性无效),否则恢复 View 模型中的更改并且不使任何内容无效。

关于c# - 在*到达 View 模型之前拦截 UI 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41163077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com