【发布时间】:2017-10-16 12:07:49
【问题描述】:
我有一个通过菜单按钮更新的地图图块设置。我遇到了一个奇怪的情况,我只是在发布版本中遇到了错误。代码如下:
视图模型
private KnownTileSource _selectedTile;
public KnownTileSource SelectedTile
{
get { return _selectedTile; }
private set
{
_selectedTile = value;
...
OnPropertyChanged("SelectedTile");
}
}
查看
<Window ...
xmlns:predefined="clr-namespace:BruTile.Predefined;assembly=BruTile">
...
<MenuItem Header="_Bing Aerial" Command="{Binding ChangeTileCommand}" CommandParameter="{x:Static predefined:KnownTileSource.BingAerial}" IsChecked="{Binding Path=SelectedTile, Mode=TwoWay, Converter={local:EnumToBooleanConverter}, ConverterParameter=BingAerial}"/>
...
</Window>
这在我的开发人员环境中一切正常,但是当我生成发布版本时,我得到了以下信息:
错误
System.InvalidOperationException: A TwoWay or OneWay ToSource binding cannot work on the read-only property 'SelectedTile'...
简单的解决方案,将上述SelectedTile属性中的private set改为set。
那么,为什么在调试期间没有抛出错误,而只是在发布期间抛出错误呢?我看不出它在调试模式下是如何工作的。
【问题讨论】:
-
我自己也遇到过。对我来说,问题在于是否将调试器附加到进程,而不是应用程序是在调试还是发布模式下构建的。