gpt4 book ai didi

.net - WPF .Net 4 - OneWayToSource 绑定(bind)到只写属性在某些机器上有效!如何?

转载 作者:行者123 更新时间:2023-12-02 02:06:03 26 4
gpt4 key购买 nike

我最近在代码中将 OneWayToSource 绑定(bind)添加到 View 模型中的只读属性。当时我不知道 .Net 4 的变化,当没有 getter 时这会导致异常:

<Popup IsOpen="{Binding IsPopupOpen, Mode=OneWayToSource}" />
...
public bool IsPopupOpen
{
set
{
// do something with value
}
}

问题是,这段代码可以在我的电脑上运行而不会抛出异常。完全相同的可执行文件在其他机器上不起作用 - 弹出窗口不会打开,并且会抛出预期的异常。我不知道这怎么可能?该项目以 .Net FW 4 为目标。

我确保清除了我的 bin 文件夹并重建,但它仍然在我的机器上无一异常(exception)地工作,而不是在其他机器上。

我知道如何“修复”这个 - 只需向属性添加一个 getter。但是我需要弄清楚该程序在不同机器上的运行方式有何不同,因为这可能会导致其他严重问题...

编辑:

这让我很生气!我使用 Snoop WPF 实用程序查看我的弹出窗口,似乎根本没有绑定(bind)到 IsOpen(绑定(bind)是 XAML 的新添加)。但是,如果我将调试器附加到应用程序并在绑定(bind)属性的 setter 中设置断点,它会命中我的断点!!

最佳答案

一些猜测。

在 net 4.0 中的这一变化之后,他们决定使其在 .net 4.5 中更加一致:如果 getter 存在,则将属性重新读回 UI,否则不会发生任何可怕的事情,也不会抛出异常。

如果是这样,并且您安装了 .net 4.5,您可以获得此行为而不是预期的行为。
我们遇到过 4.5 的更新悄无声息地传播到 4.0 的情况。

关于.net - WPF .Net 4 - OneWayToSource 绑定(bind)到只写属性在某些机器上有效!如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14967667/

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