2016-03-25 7 views
-1

はしかし、私は `INotifyPropertyChangedの無効化ボタンやチェックボックス

引数1のエラーを取得します文字列 '

'から' EDIT

ボタンをクリックしたときに無効にするボタンのXAMLコードです。

resetButton.IsEnabled = false私が最初に無効にしようとしていたものです。

<Button x:Name="resetButton" 
     Grid.Row="1" 
     HorizontalAlignment="Right" 
     VerticalAlignment="Bottom" 
     Width="80" 
     Content="Reset" 
     Style="{StaticResource BlueButton}" 
     Click="resetButton_Click"/> 
+0

PropertyChangedEventArgsコンストラクタは、文字列をパラメータとして取ります。ここで、文字列は更新されたプロパティの名前です。名前は、INotifyPropertyChangedを継承するクラスのプロパティである必要があります。 resetButton.IsEnabledはXAMLのそれにバインドされています。 –

答えて

-1

私が最初にコンパイラが文句を言っているという単なる構文エラーについて説明します:

あなたはそこで

new PropertyChangedEventArgs(resetButton.IsEnabled = false) 

を起動し、表現

resetButton.IsEnabled = false 

は、と評価されますa bool。したがって、boolをコンストラクタPropertyChangedEventArgsに渡しています。

ただし、that constructorは、string、つまり変更されたプロパティの名前を想定しています。


さて、意図した結果について:私は

ないGUI

上のボタンを更新するには、次のコマンドを使用しています

を、あなたはそうではありません。少なくとも、直接ではありません。

、あなたは彼らが、例えばやってやりたいことができ、PropertyChangedイベントに登録されたイベントハンドラを起動することであるため、あなたはPropertyChangedへの呼び出しを使用することができますどのようなGUIで何かを更新してください。

myObject.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e) 
{ 
    resetButton.IsEnabled = false; 
} 

これは、匿名メソッドを作成し、あなたのイベントとイベントハンドラとして登録:

したがって、どこかのコードでは、あなたはこのような何かを記述する必要があります。

は今、通常は、あなたもmyObjectプロパティが実際に変更されたを見るためにe引数にPropertyName propertyをチェックしたくなるでしょう。

ここで、イベントの発生に戻ります。PropertyChangedEventArgsインスタンスを構築するときに、変更されたプロパティのプロパティ名を渡す必要があります。あなたの財産は、タイプboolである場合(あなたはあなたの財産がboolにあるどんなタイプに変換するための適切なvalue converterを持っている場合は)

は、あなたが直接あなたの財産にXAMLでresetButton.IsEnabledプロパティをバインドすることができます。必要に応じてボタンの有効状態を更新するために、フードの下にPropertyChangedイベントのハンドラを自動的に登録します。

+0

意味のある詳細な説明をありがとうございます。しかし、私はXAMLには新しく、構文全体を理解することはできません。もしあなたがそれを一つの作品にすることができたら、私は感謝します。 – Imsa

+0

ボタンをバインディングで表示するXAMLフラグメントを追加することも考えましたが、そのために、(PropertyChangedを呼び出す)プロパティが何であるかを知る必要があります。 –

+0

私は質問を更新しました。ありがとう – Imsa

関連する問題