2016-01-28 1 views
0

Я хотел бы иметь возможность написать еще одно значение, которое не находится в списке в DatagridComboBoxColumnНаписать в ComboBoxColumn из DataGrid в WPF

Как я могу это сделать?

В WinForm я использовал, чтобы сделать это с

private void DataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
     { 
      ComboBox c = e.Control as ComboBox; 
      if (c != null) c.DropDownStyle = ComboBoxStyle.DropDown; 
     } 
private void DataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) 
     { 

      if (e.ColumnIndex == dataGridViewTextBox.Index) 
      { 
       object eFV = e.FormattedValue; 
       if (!dataGridViewTextBox.Items.Contains(eFV)) 
       { 

        DataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = eFV; 


       } 
      } 
     } 
+1

вы пытались что-нибудь еще? – Muds

+0

На самом деле нет, я понятия не имею, с чего начать, и я не очень хорошо разбираюсь в XAML. – Cantinou

ответ

1

Можно использовать TargetNullValue и FallbackValue:

<DataGrid> 
    <DataGridComboBoxColumn ItemsSource="{Binding EmployeeNames, 
TargetNullValue='Oops, I am missing',FallbackValue='I am default'}"/>   
</DataGrid> 

Как MSDN говорит:

FallbackValue - Получает или задает значение для использования, когда привязка неспособна вернуть значение. TargetNullValue - Получает Получает или задает значение , которое используется в целевом объекте, когда значение источника равно null.

Update:

ViewModel:

private ObservableCollection<Person> persons; 

public ObservableCollection<Person> Persons 
{ 
    get { return persons; } 
    set { persons = value; 
     OnPropertyChanged("Persons"); 
    } 
} 

private void FillData() 
{ 
    persons = new ObservableCollection<Person>(); 
    for (int i = 0; i < 30; i++) 
    { 
     if(i%2==0) 
     persons.Add(new Person() { IdPerson=i, Name="", SurName="Albahari"}); 
     else 
      persons.Add(new Person() { IdPerson = i, Name = "Ben & Joseph " + i.ToString(), SurName = "Albahari" }); 
    } 
    //If you want set some value, you can do it: 
    if(persons[0].Name=="") 
     persons[0].Name = "That should be Name"; 

}

+0

ok Я посмотрю на этот путь. Спасибо – Cantinou

+0

Но как я могу установить значение по умолчанию? Потому что я хотел бы написать то, что хочу, а не значение по умолчанию. – Cantinou

+0

Это ваш код приложения или MVVM? – StepUp