Wpf datagrid с combobox
У меня есть проблема с DataGrid, привязанной к ObservableCollection, где каждый столбец является ComboBox. Первый ComboBox имеет ItemsSource, привязанный к ObjectDataProvider. Другие ComboBoxes заполняются элементами в зависимости от SelectedItem в первом ComboBox. Я использую DataGridTemplateColumn\DataTemplate\ComboBox... Проблема в том, что когда я выбираю элемент из первого ComboBox, SelectedItem не задается, потому что в коллекции, к которой привязана DataGrid, не существует элементов. DataGrid должен создать новую строку (добавить объект в коллекцию), как только я начну выбирать элемент из первого выпадающего списка. Я не могу добавить новую строку.
<DataGrid DockPanel.Dock="Top" ItemsSource="{Binding Path=Routes, Mode=TwoWay}" AutoGenerateColumns="False" CanUserDeleteRows="True" CanUserAddRows="True" IsSynchronizedWithCurrentItem="True" GridLinesVisibility="All" > <DataGrid.Resources> <ObjectDataProvider x:Key="Modules" ObjectType="{x:Type serv:PortPinDataService}" MethodName="GetModules"/> </DataGrid.Resources> <DataGrid.Columns> <DataGridTemplateColumn Header="Module" Width="*"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ComboBox ItemsSource="{Binding Source={StaticResource Modules}}" DisplayMemberPath="Name" SelectedItem="{Binding Path=CurrentModule, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> </ComboBox> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridComboBoxColumn Header="Module" ItemsSource="{Binding Source={StaticResource Modules}}" SelectedItemBinding="{Binding Path=CurrentModule, UpdateSourceTrigger=PropertyChanged}" Width="80" DisplayMemberPath="Name" > <DataGridComboBoxColumn.ElementStyle> <Style TargetType="ComboBox"> <Setter Property="Width" Value="80"/> </Style> </DataGridComboBoxColumn.ElementStyle> </DataGridComboBoxColumn> <DataGridTemplateColumn Header="Signal" Width="*"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ComboBox ItemsSource="{Binding Path=SignalsByModule}" DisplayMemberPath="SignalName" SelectedItem="{Binding Path=CurrentSignalRegister, UpdateSourceTrigger=PropertyChanged}"></ComboBox> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Header="Route to" Width="*"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ComboBox ItemsSource="{Binding Path=Registers}" DisplayMemberPath="RegRouteInfo"></ComboBox> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid>
Итак, мой вопрос заключается в том, почему новый объект не добавляется в коллекцию DataGrid при использовании DataGridTemplateColumn?
Что я уже пробовал:
Если я изменю первый столбец на DataGridComboBoxColumn, то новый элемент будет добавлен в коллекцию, как только я начну выбирать элемент и будет установлен SelectedItem.