2

TextBox コンテンツを別のクラスのプロパティに双方向バインドする際に問題があります。stackoverflow を検索すると、多くのヒント/解決策が得られましたが、どれも機能していないようです。

私の XAML コードには次のものがあります。

< TextBox ... Width="336" IsReadOnly="True"
 Text="{Binding Path=AssignedClearProgram, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>

(... 重要でない項目はすべて削除しました)

付随する cs コードには、次のものがあります。

public CombiWindow(Combi combi)
{
    ViewModel = new CombiViewModel(combi);
    DataContext = ViewModel;
}

CombiViewModel では:

    [UsedImplicitly]
    public string AssignedClearProgram { get; set; }

AssignedClearProgram を初めて割り当てると、設定したテキストがテキスト ボックスに入力されるようですが、ウィンドウが表示されて AssignedClearProgram がコードから更新された後 (つまり、set メソッドが呼び出された後)、データは更新されません。画面。

この変数が変更されたときにテキストボックスを更新する解決策はありますか?

敬具、

ミシェル

4

2 に答える 2

5

ビューモデル クラスは INotifyPropertyChanged を実装する必要があり、プロパティを変更するたびにそのインターフェイスのイベントを発生させる必要があります。次に、バインディングが変更を検出し、テキスト ボックスを更新します。

于 2012-07-21T22:01:55.093 に答える
2

ビュー モデル クラスはINotifyPropertyChangedインターフェイスを実装する必要があります。

プロパティは次のようになります。

private string assignedClearProgram;

public string AssignedClearProgram
{
   get { return assignedClearProgram; }
   set
   {
       if (assignedClearProgram != value)
       {
           assignedClearProgram = value;

           // Notify property has changed here using PropertyChanged event from INotifyPropertyChanged.
       }
   }
}

インターフェイスを実装してそのイベントを利用する方法の例については、この記事を参照してください。INotifyPropertyChangedPropertyChanged

于 2012-07-21T22:07:26.433 に答える