2012-05-07 106 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我以前一樣。但是你是新的,所以我接受並且對你的答案投票。歡呼 –