2015-02-20 4 views
0

Я использую Datagrid в WPF и DataGridComboBoxColumn. Вы можете найти код ниже:DataGridComboBoxColumn не обновляет модель WPF

<DataGrid>...     

    <DataGridComboBoxColumn Header="Category" Width="200"           
            SelectedValueBinding="{Binding SelectedCategory, UpdateSourceTrigger=PropertyChanged}" 
            DisplayMemberPath="CategoryName" 
            SelectedValuePath="CategoryID"> 
     <DataGridComboBoxColumn.ElementStyle> 
      <Style TargetType="ComboBox"> 
       <Setter Property="ItemsSource" Value="{Binding CategoriesList}"></Setter> 
      </Style> 
     </DataGridComboBoxColumn.ElementStyle> 
     <DataGridComboBoxColumn.EditingElementStyle> 
      <Style TargetType="ComboBox"> 
       <Setter Property="ItemsSource" Value="{Binding CategoriesList}"></Setter> 
      </Style>       
     </DataGridComboBoxColumn.EditingElementStyle> 
    </DataGridComboBoxColumn> 

Модель следующим образом:

public CategoryModel SelectedCategory { get; set; } 
public ObservableCollection<CategoryModel> CategoriesList 
{ 
    get; 
    set; 
} 

Теперь, когда я когда-либо изменить выбор в выпадающем списке он показывает красную границу, не в силах зафиксировать изменения к источнику.

ответ

0

Это неправильно:

<DataGridComboBoxColumn Header="Category" Width="200"           
           SelectedValueBinding="{Binding SelectedCategory, UpdateSourceTrigger=PropertyChanged}" 
           DisplayMemberPath="CategoryName"> 

удалить SelectedValuePath или вы получите тип missmatch. Я сомневаюсь, что вам нужен UpdateSourceTrigger либо ... Попробуйте пропустить.

+0

Да, я получаю несоответствие типов. Но в чем причина несоответствия типов. И как обновить модель при изменении выбора? –

+0

Эй, спасибо Флориан, я только что получил решение, я заменил SelectedValueBinding на SelectedItemBinding, и он работает. –

+0

Рад, что это сработало ... есть слишком много атрибутов :) –

Смежные вопросы