0

私はWPFが初めてです。複数のタブを持つアプリケーションがあります。1 つのタブで、データベースのテーブルにデータを挿入できます。別のタブには、前述のテーブルの itemsource を含むコンボボックスがあります。ユーザーがコンボボックスから選択したいときにコンボボックスの項目を更新したい./

次の方法で GotFocus プロパティを試しました。

private void ComboBoxOperatingPoints_GotFocus_1(object sender, RoutedEventArgs e)
        {
            this.ThisViewModel.UpdateModel();
        }

Updatemodel 関数には次のものが含まれます。

this.OperatingPoints = new ObservableCollection<Operating_Point>(new OperatingPointRepository().GetAll());
            this.NotifyPropertyChanged("OperatingPoints");

XAML でのコンボボックスのバインド:

<ComboBox SelectionChanged="ComboBoxOperatingPoints_SelectionChanged" 
                      x:Name="ComboBoxOperatingPoints" 
                      GotFocus="ComboBoxOperatingPoints_GotFocus_1"
                      FontSize="30" 
                      HorizontalAlignment="Right" 
                      Margin="40,40,0,0" 
                      VerticalAlignment="Top" 
                      Width="200" 
                      Height="50"
                      IsSynchronizedWithCurrentItem="True"
                      ItemsSource="{Binding OperatingPoints}"
                      DisplayMemberPath="name"
                      SelectedValue="{Binding OperatingPointID,UpdateSourceTrigger=PropertyChanged}"
                      SelectedValuePath="operating_point_id"
                      >

コンボボックスは更新されますが、検証エラーが発生し、最初の GotFocus イベントが発生した後は使用できなくなります。前もって感謝します!

編集:

最後に、GotFocus イベントを DropDownOpened イベントに変更しましたが、正常に動作しています。

4

1 に答える 1

0

あなたのコードは、ObservableCollection更新ごとに新しいものを作成しています。おそらく一ObservableCollection度だけ作成して、その内容を に置き換えUpdateModelます。たとえば、ビュー モデルのコンストラクターで、OperatingPointsコレクションをインスタンス化します。

public class MyViewModel {

    public MyViweModel() {
        this.OperatingPoints = new ObservableCollection<Operating_Point>();
    }
}

次に、でUpdateModel

public void UpdateModel() {
    this.OperatingPoints.Clear();

    foreach ( Operating_Point point in new OperatingPointRepository().GetAll() ) {
        this.OperatingPoints.Add(point);
    }
    NotifyPropertyChanged( "OperatingPoints" );
}
于 2013-09-06T17:57:48.793 に答える