gpt4 book ai didi

WPF 绑定(bind)默认模式

转载 作者:行者123 更新时间:2023-12-04 12:37:26 25 4
gpt4 key购买 nike

在我的一个应用程序中,我有这样的代码:

<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”的帮助。不同机器上的默认绑定(bind)模式怎么可能不同?

最佳答案

Value位于 ProgressBar 的属性(property)绑定(bind) TwoWay默认情况下,除非您明确设置 Mode,否则应该会发生异常至OneWay .但是我无法解释为什么它不会出现在您的机器上。我尝试将 Reflector 与 .NET 版本 4.0、3.5 和 3.0 一起使用,据我所知,默认绑定(bind)模式已经有一段时间没有改变了。

如果你安装了 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));

关于WPF 绑定(bind)默认模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4759706/

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