2017-08-09 213 views
0

我试着将DataGridComboBoxColumn更改为DataGridTemplateColumn,但没有成功。WPF DataGrid组合框绑定

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

我错过了什么?

数据网格是这样的:

<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" /> 

它用于设定国家(ID)在书籍表。我为图书(bookViewSource)和国家(countryLookup)使用CollectionViewSource

的工作不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> 

请帮助。谢谢。

回答

0

这解决了我的问题:

添加IsSynchronizedWithCurrentItem = “假” 到ComboBox在DataGridTemplateColumn和删除源= {StaticResource的bookViewSource}作为MM8建议。

0

删除Source={StaticResource bookViewSource}

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

已删除,但...我得到了额外的问题:它也在改变可见行的数据库。那就是:如果我选择第一行的国家,它将更改数据库中可见行的国家/地区! – Prodromos

+0

您的Book实体类应该有一个Country属性,该属性包含本书当前选定属性的ID。它是在您选择数据库中的项目时设置的此属性。 – mm8

+0

是的,这是正确的。它有一个Country属性,它是从Combobox中选择的ID。奇怪的是DataGridComboboxColumn工作正常。但是Tamplatecom不是! – Prodromos