2017-10-16 12 views
5

マップタイルの設定があります。メニューボタンを使用して更新しています。私はリリースビルドでエラーが発生したばかりの奇妙な状況に陥っています。コードは以下の通りである:リリースビルド時にのみプライベートセッターにエラーが発生する

ビューモデル

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プロパティにsetからprivate setを変更します。

これはどうやって、デバッグ時やリリース中にエラーを投げていないのでしょうか?デバッグモードでこれがどのように動作していたのか分かりません。

+0

これは自分自身で発生しました。私の問題は、アプリケーションがデバッグモードまたはリリースモードでビルドされているのではなく、デバッガがプロセスにアタッチされているかどうかということでした。 –

答えて

5

この問題は修正された既知のバグです:アプリのターゲットの.NET Framework 4.0が、.NET Frameworkが4.5+開発マシンにインストールされているのであれば、あなたがこの動作を得ることができhttps://connect.microsoft.com/VisualStudio/feedback/details/773682/wpf-property-with-private-setter-is-updated-by-a-twoway-binding

問題を解決するには、privateキーワードを設定者から削除する必要があります。

関連する問題