1つのブール値を設定するだけでコード内の複数のテキストボックスのIsEnabledプロパティを制御したいWPFアプリがあります。そこで、テキストボックスのIsEnabledプロパティにデータバインディングを追加することにしました。ソースオブジェクトの定義は次のとおりです。
<Window.Resources>
<src:QuestionControlsState x:Key="QuestionContorlsState" IsEnabled="True"/>
</Window.Resources>
ここで、'QuestionControlsState'パブリックプロパティが1つしかない単純なクラス'IsEnabled'次に、いくつかのテキストボックスをバインドします。
<TextBox Name="textBoxQuestion"
IsEnabled="{Binding Path=IsEnabled, Source={StaticResource QuestionContorlsState}}">
この時点で、Window.ResourcesセクションのIsEnabled属性を変更すると、データバインディングが機能します。しかし、私はそれをコードから制御したいので、ソースオブジェクトを取得します:
QuestionControlsState _questionControlsState = (QuestionControlsState)this.FindResource("QuestionContorlsState");
そして、_questionControlsState.IsEnabledを設定しようとすると、テキストボックスの状態が変更されず、出力に警告が表示されるようになりました。