ProgressBar值绑定到ReadOnly属性

时间:2013-10-03 22:07:29

标签: wpf binding

我将ProgressBar Value Propetry绑定到我的ViewModel的readonly属性。这在Win 7机箱上工作正常,但在Win XP机器上,它会抛出异常。

XAML

<ProgressBar Grid.Row="0" Minimum="0.0" Maximum="1.0" Value="{Binding Progress, Mode=TwoWay}" />

异常

An unhandled exception of type 'System.InvalidOperationException' occurred in PresentationFramework.dll

Additional information: A TwoWay or OneWayToSource binding cannot work on the read-only property 'Progress'

来自异常消息和WPF Binding default mode帖子。解决方案似乎是将绑定模式设置为OneWay。

我的问题是导致ProgressBar设置值的原因是什么?为什么它适用于Win 7而不适用于XP?

3 个答案:

答案 0 :(得分:3)

双向绑定意味着目标(在这种情况下为ProgressBar.Value)应将其更改传播回源(Progress属性)。如果源是只读的,这当然是不可能的,所以异常是有道理的。正如您所指出的,唯一有意义的绑定是单向源到目标绑定。

我不知道它为什么会在Win 7上运行 - 尽管可能“工作”只是意味着它无声地失败,而不是实际更新只读属性。

答案 1 :(得分:2)

将其更改为:

<ProgressBar Grid.Row="0" Minimum="0.0" Maximum="1.0" Value="{Binding Progress, Mode=OneWay}" />

请注意Mode

的更改

答案 2 :(得分:0)

我知道这是旧的,但如果你绑定到只读属性,你想指定绑定模式是OneWay,而不是TwoWay。