WPF DataGrid组合框绑定

时间:2017-08-09 09:01:15

标签: wpf data-binding combobox datagrid wpfdatagrid

我尝试将DataGridComboBoxColumn更改为DataGridTemplateColumn但未成功。

DataGridComboBoxColumn按预期工作,但DataGridTemplateColumn中的Combobox不是。如果我更改此Combobox中的值,它将更改所有可见行中的所有可见组合框值。

我错过了什么?

DataGrid是这样的:

<DataGrid x:Name="bookDataGrid"
                      AutoGenerateColumns="False"
                      EnableRowVirtualization="True"
                      ItemsSource="{Binding Source={StaticResource bookViewSource}}">

这样DataGridComboboxColumn

                    <DataGridComboBoxColumn x:Name="countryColumn"
                                        ItemsSource="{Binding Source={StaticResource countryLookup}}"
                                        DisplayMemberPath="CountryName"
                                        SelectedValuePath="ID"
                                        SelectedValueBinding="{Binding Country,UpdateSourceTrigger=PropertyChanged}"
                                        Header="Country"
                                        Width="SizeToCells" />

用于设置Books表中的国家/地区(ID)。我使用CollectionViewSource用于Books(bookViewSource)和Country(countryLookup)。

无法正常工作DataGridTemplateColumn

                    <DataGridTemplateColumn x:Name="CountryTemplateColumn">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <ComboBox x:Name="CountryCombo"                                              
                                          ItemsSource="{Binding Source={StaticResource countryLookup}}"
                                          DisplayMemberPath="CountryName"
                                          SelectedValuePath="ID"
                                          SelectedValue="{Binding Country, Source={StaticResource bookViewSource}, UpdateSourceTrigger=PropertyChanged}">
                                </ComboBox>
                            </StackPanel>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

请帮助。感谢。

2 个答案:

答案 0 :(得分:0)

删除Source={StaticResource bookViewSource}

<ComboBox x:Name="CountryCombo"                                              
                ItemsSource="{Binding Source={StaticResource countryLookup}}"
                DisplayMemberPath="CountryName"
                SelectedValuePath="ID"
                SelectedValue="{Binding Country, UpdateSourceTrigger=PropertyChanged}">
</ComboBox>

答案 1 :(得分:0)

这解决了我的问题:

添加IsSynchronizedWithCurrentItem =&#34; False&#34;到DataGridTemplateColumn中的Combobox并删除Source = {StaticResource bookViewSource},如mm8所示。