【发布时间】:2012-03-15 10:45:11
【问题描述】:
如果我们有一个组合框将“twoway”绑定到视图模型上的 TimeSpan 属性,并且转换器将时间跨度视图模型属性更改为字符串,添加一个“m”表示分钟,然后在编辑组合框值时说10m 到 5,我预计:
WPF Binding 调用 ConvertBack 以获取更新源属性的值 - 假设时间跨度为 5 分钟。
调用视图模型的时间跨度属性设置器并设置基础字段(从时间跨度 10 更改为 5),然后引发 OnPropertyChanged
WPF Binding 接收事件并因此调用其处理程序方法,该方法首先对值进行转换,然后将此“5m”转换后的值设置为目标文本属性
除了最后一步没有发生,comboxbox 保持在 5。我实际上想要这种行为,但想了解为什么最后一步没有发生。奇怪的是更改为文本框确实给出了我期望的行为(立即更新 5 到 5m)
编辑:原始问题错误地说明了我应该写组合框的文本框
更新:使用 snoop 实用程序,我看到组合框的文本属性确实变为 5m,但显示仍然为 5 - 我只能假设如果正在编辑组合框,它不会刷新其文本显示。将问题的标题从“使用转换器的 WPF 数据绑定目标-源-目标循环”更改为更准确地反映现在的情况。
【问题讨论】:
标签: wpf data-binding