【发布时间】:2015-01-26 11:03:10
【问题描述】:
我有一个 ListBox 绑定到 ObservableCollection 的对象。选择对象会将其加载到 UI 中以进行编辑和保存。
我希望在 ListBox 中选择一个新对象时,如果有未保存的更改 UI 会有提示,因此当 ListBox 选择更改并且出现提示以确认更改时需要进行检查 - 如果更改是确认然后它会正常发生,否则更改将被阻止/撤消。
提示代码是一个 async 方法,它返回一个 Task,因此它不能在 setter 中发生 - 它可以在我成功有限的事件中发生。
看来我们只能访问SelectionChanged 事件。我可以在此处提示,但是在还原时再次触发 SelectionChanged 事件导致无限循环。
鉴于这可能是一种很常见的模式 - 处理此问题的最佳实践方法是什么?
【问题讨论】:
-
为什么不能在 setter 里面做呢?
-
@AmitRaz Async 不能在 setter 中使用
-
你可以把它放在一个方法中并从你的setter中调用它
-
@AmitRaz 怎么样?据我所知,在大多数情况下,我们都会收到
Task,但这需要awaited。我们可以使用.Result以非异步方法解析Task,但在这种情况下这会阻塞UI线程,因此提示永远不会显示...
标签: wpf xaml asynchronous listbox