我最近在我们的代码中添加了一个 OneWayToSource 绑定到视图模型中的只读属性。当时我不知道.Net 4的变化,当没有getter时这会导致异常:
<Popup IsOpen="{Binding IsPopupOpen, Mode=OneWayToSource}" />
...
public bool IsPopupOpen
{
set
{
// do something with value
}
}
问题是,这段代码可以在我的电脑上运行而不会引发异常。完全相同的可执行文件在其他机器上不起作用 - 弹出窗口没有打开,并且引发了预期的异常。我无法弄清楚这怎么可能?该项目针对.Net FW 4。
我确保清除我的 bin 文件夹并重建,但它仍然在我的机器上毫无例外地工作,而不是在其他机器上。
我知道如何“解决”这个问题——只需在属性中添加一个吸气剂。但是我需要弄清楚程序在不同机器上的运行方式有何不同,因为这可能会导致其他严重问题......
编辑:
这让我发疯!我使用 Snoop WPF 实用程序查看我的弹出窗口,似乎根本没有绑定到 IsOpen(绑定是 XAML 的新增功能)。但是,如果我将调试器附加到应用程序并在绑定属性的设置器内设置断点,它会命中我的断点!