2012-05-07 141 views
3

插入的文本我有一个ComboBox,它看起来像这样:结合可编辑ComboBox和检测WPF

<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在列表中,则用户可以从列表中选择它,否则,他在ComboBox中输入新的Job.Title,视图模型通知它,并且创建新的Job项目并且还将其添加到JobList

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

+0

那究竟究竟是不是工作?从你发布的内容看,一切看起来都正确另外,你可以发布你如何设置你的视图的DataContext? – shriek

+0

看@Simon_D建议[这里](http://stackoverflow.com/questions/3373239/wpf-editable-combobox) –

+0

问题是'Job'属性的类型是'Job'和组合框文本输入可以不被viewmodel检测到。如果我将类型为'string'的'Job'设置为并绑定了'ComboBox.Text'属性,那么我无法检测到所选项目的'Id'。 –

回答

4
  1. 在视图模型像“SelectedJobName”
  2. 绑定这个属性来Combobox.Text
  3. 不管你想使用的输入值(指挥,演示)创建一个字符串属性,检查是否选择值not null和selectedJobName属性值不匹配。
+1

晚但是好:D我以前一样。但是你是新的,所以我接受并且对你的答案投票。欢呼 –