1

私のXAMLには次のものがあります:

<TextBox Name="TitleValue" 
         Text="{Binding ElementName=ListValue, Path=SelectedItem.Title, Mode=TwoWay}"

<TextBox Name="DescValue"
         Text="{Binding ElementName=ListValue, 
                        Path=SelectedItem.Description, Mode=TwoWay}"

TitleValue または DescValue と Tab のいずれかに値を入力するか、ウィンドウ内の別の場所をクリックすると、コレクション クラスのプロパティが正しく更新されます。X をクリックしてウィンドウを終了すると、コレクション クラスのデータが正しく保存されます。

ただし、これらのフィールドのいずれかに値を入力し、X をクリックしてウィンドウを終了すると、コレクション クラスのデータは保存されますが、入力した値は、X をクリックしたときに編集していた特定のフィールドには保存されません。

フィールドにフォーカスを失うイベントを実装しましたが、X をクリックしても機能します。これらのイベントでは、コードを入れました:

private void Event_DescValue_LoseFocus(object sender, RoutedEventArgs e)
{
    ((Import)ListValue.SelectedItem).Description = ((TextBox)e.OriginalSource).Text;
}

しかし、それもうまくいきませんでした。以下も機能しません。

Imports[ListValue.SelectedIndex].Description = ((TextBox)e.OriginalSource).Text;

編集中のフィールドで X がクリックされたときに、選択したクラス Imports を更新するコレクション クラス Imports を取得するにはどうすればよいですか?

編集中のフィールドをタブで移動したり、ウィンドウの他の場所をクリックしたりしたのとまったく同じように機能するはずです。

4

1 に答える 1

1

バインディングのUpdateSourceTriggerを PropertyChanged に変更します。

そのようです:

<TextBox Name="TitleValue" Text="{Binding ElementName=ListValue, 
     Path=SelectedItem.Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
于 2013-04-05T17:44:40.277 に答える