绑定可编辑组合框并检测 wpf 中插入的文本

jav*_*iry 3 c# wpf combobox wcf-binding mvvm

我有一个ComboBox看起来像这样的:

<ComboBox
    ItemsSource="{Binding JobList}"
    SelectedValue="{Binding Job,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
    DisplayMemberPath="Title"
    SelectedValuePath="Id"
    IsEditable="True"
    StaysOpenOnEdit="True"
    />
Run Code Online (Sandbox Code Playgroud)

它与 my 的绑定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 */ }
}
Run Code Online (Sandbox Code Playgroud)

Job

public class Job {
    public int Id { get; set; }
    public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

真的,我想填满ComboBox工作清单。因此,如果用户的指定Job在列表中,则用户可以从列表中选择它,否则,他在 中输入一个新Job.Title项目ComboBox,视图模型会通知它,并创建一个新Job项目并将其添加到 中JobList

你有什么想法吗?你能帮我吗?

小智 5

  1. 在 viewModel 中创建一个字符串属性,例如“SelectedJobName”
  2. 将此属性绑定到 Combobox.Text
  3. 无论您想在何处使用输入的值(Command、Presenter),请检查所选值是否不为空且 selectedJobName 属性值是否不/匹配。