2017-08-09 266 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