0

ItemIDそのようなプロパティにバインドされたテキストボックスがあります。

private string _itemID;
public string ItemID {
    get { return _itemID; }
    set { 
        _itemID = value;
    }
}

テキスト ボックスの XAML は次のとおりです。

<TextBox Text="{Binding Path=ItemID, Mode=TwoWay}" Name="txtItemID" />

問題は、ItemID入力しても値がすぐに更新されず、タブ キーを押してテキスト ボックスのフォーカスを失うまで
、ボタン (コマンド) が無効になることです。Add

4

2 に答える 2

5

はい、デフォルトでは、プロパティはフォーカスを失った場合にのみ更新されます。これは、キーストロークごとにバインドされたプロパティの更新を回避することでパフォーマンスを向上させるためです。UpdateSourceTrigger=PropertyChangedを使用する必要があります。

これを試して:

<TextBox 
    Text="{Binding Path=ItemID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
    Name="txtItemID" />

ViewModel の INotifyPropertyChanged インターフェイスも実装する必要があります。それ以外の場合、ViewModel でプロパティが変更された場合、UI はそれを認識しません。したがって、更新されません。これは実装に役立つ場合があります。

于 2013-05-21T08:20:03.457 に答える
2

セッターで OnPropertyChanged イベントを発生させる必要があります。そうしないと、フレームワークは、ユーザーがプロパティを編集したことを認識できません。

ここではいくつかの例を示します。

マジック ストリングを使用しない NotifyPropertyChanged の実装

オブジェクトの更新後に PropertyChanged を通知する

于 2013-05-21T08:17:57.207 に答える