3

TextBox のIsEnabledプロパティのバインドに問題があります。以下のコードが機能するはずであることに基づいて、このフォーラムでいくつかの投稿を見てきました (少なくともこれは私が考えたことです)。ただし、アプリを実行するとIsNumberEnabled 、対応するビューが読み込まれる直前に、プロパティの呼び出しが 1 回だけ実行されます。誰かここで手を貸してくれませんか。ありがとう。

xaml:

<Textbox Text="{Binding Path=Number, Mode=TwoWay}" IsEnabled="{Binding Path=IsNumberEnabled}" ... />

モデルビュー:

public bool IsNumberEnabled
{
    get { return ... condition ....; }  }
4

1 に答える 1

8

クラスは適切ModelViewに実装する必要があります。INotifyPropertyChanged

に影響する値を変更する場合は、プロパティ名としてを使用する...condition...必要があります。これにより、WPF は値を再度フェッチしてチェックします。PropertyChanged"IsNumberEnabled"

PropertyChangedこれは多くの場合、カスケードしてイベントを複数回発生させる必要がある他のプロパティがあることを意味します。たとえば、 がIsNumberEnabledという名前の別のプロパティに依存している場合FooFooのプロパティ定義は次のようになります。

public double Foo
{
    get { return foo; }
    set
    {
        if (foo != value)
        {
            foo = value;
            RaisePropertyChanged();  // Raise PropertyChanged event for "Foo"
            RaisePropertyChanged("IsNumberEnabled"); // Tell WPF to check this property too
        }
    }
}
于 2013-08-30T18:13:56.110 に答える