我有一個地圖瓷磚設置,我通過菜單按鈕更新。我遇到了一個奇怪的情況,那就是在發佈版本時只有一個錯誤。代碼如下:私人二傳手投擲錯誤只發布版本
視圖模型
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
。
那麼爲什麼在調試過程中並且僅在發佈過程中沒有拋出錯誤呢?我看不到在調試模式下這是如何工作的。
剛剛遇到這個我自己。對我而言,問題在於是否將調試器連接到進程,而不是如果應用程序是以調試模式還是發佈模式構建的。 –