3

私はComboBoxそれがこのように見えることを持っています:

<ComboBox
    ItemsSource="{Binding JobList}"
    SelectedValue="{Binding Job,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
    DisplayMemberPath="Title"
    SelectedValuePath="Id"
    IsEditable="True"
    StaysOpenOnEdit="True"
    />

ViewModelそして、このように見える私のへのバインディング:

public class ViewModel {
    // this will fill from a database record for a person
    public Job Job {
        get { return _job; }
        set {
            if(value == _job) return;
            _job = value;
            OnPropertyChanged( () => Job );
        }
    }
    // this will fill from all jobs records in database
    public ObservableCollection<Job> JobList 
    { /* do same as Job to implementing INotifyPropertyChanged */ }
}

そしてそれJobは:

public class Job {
    public int Id { get; set; }
    public string Title { get; set; }
}

ComboBox本当に、仕事のリストを記入したいです。したがって、ユーザーが指定Jobしたものがリストにある場合、ユーザーはリストからそれを選択できます。そうでない場合、ユーザーはに新しいを入力しJob.TitleComboBoxビューモデルがそれに通知し、新しいJobアイテムを作成して、に追加しJobListます。

何か考えはありますか?手伝ってくれませんか?

4

1 に答える 1

4
  1. 'SelectedJobName'のような文字列プロパティをviewModelに作成します
  2. このプロパティをCombobox.Textにバインドします
  3. 入力した値(Command、Presenter)を使用する場合は常に、選択した値がnullでなく、selectedJobNameプロパティの値が一致していないかどうかを確認してください。
于 2012-05-09T05:45:40.840 に答える