在我的一个应用程序中,我有这样的代码:
<ProgressBar Grid.Column="0" Grid.Row="0" HorizontalAlignment="Stretch" Height="27" Margin="5,0,5,0" Maximum="{Binding TabuProgressEnd}" Value="{Binding TabuProgress}" />
当我测试这个时一切正常,但是当我的客户在 VS 下打开它并运行此代码时抛出异常:
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 'TabuProgress' of type 'TSPLib.TabuEngine'.
通常我会认为这是某种骗局,但我知道这个人不知道编码和使“Mode=OneWay”显式有所帮助。怎么可能不同的机器默认的绑定模式不同呢?
The Value
财产在ProgressBar
binds TwoWay
默认情况下,除非您明确设置,否则应该发生异常Mode
to OneWay
。但是我无法解释为什么它不会出现在你的机器上。我尝试将 Reflector 与 .NET 版本 4.0、3.5 和 3.0 一起使用,据我所知,默认绑定模式有一段时间没有改变。
如果您安装了 Reflector,那么看看 ValueProperty(继承自 RangeBase)在您的计算机上是什么样子会很有趣
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register(
"Value",
typeof(double),
typeof(RangeBase),
new FrameworkPropertyMetadata(
0.0,
FrameworkPropertyMetadataOptions.Journal |
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
new PropertyChangedCallback(RangeBase.OnValueChanged),
new CoerceValueCallback(RangeBase.ConstrainToRange)),
new ValidateValueCallback(RangeBase.IsValidDoubleValue));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)