2014-04-25 114 views
3

我有這個XAML從ItemSource是Enum的組合框中選擇一個值。我使用的教程:WPF DataGridTemplateColumn組合框更新所有行

http://www.c-sharpcorner.com/uploadfile/dpatra/combobox-in-datagrid-in-wpf/

  <DataGrid x:Name="dgProductItem" 
        ItemsSource="{Binding ProductVersion.ProductItems}" 

      <DataGridTemplateColumn Header="Deployment Type" Width="120"> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding DeploymentType}"></TextBlock> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
       <DataGridTemplateColumn.CellEditingTemplate> 
        <DataTemplate> 
         <ComboBox ItemsSource="{Binding Source={StaticResource DeploymentTypeEnum}}" 
            SelectedItem="{Binding DeploymentType}"> 

         </ComboBox> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellEditingTemplate> 

然而,當我從一排,更改值將更新所有行。有人知道爲什麼嗎?

編輯:

,如果我只是改變一個行,只會更新這一行,但是當我去改變不同的行,該行我只是改變也將改變以前的..

乾杯

+0

-1對於複製問題......更糟糕的是,您複製了您自己的問題。你想問幾個關於同樣問題的問題?在這個網站上,我們更喜歡用戶編輯他們的問題以提供更多信息,而不是反覆提問相同的問題。 – Sheridan

+0

但是,這個問題的答案是因爲你的'DeploymentType'幾乎肯定是單數的,但是你在'DataGrid'中的每一行使用它。您的'enum'屬性需要放在DataGrid中每個項目所屬的類中。 – Sheridan

+0

我同意,它的同一個問題,但它完全不同的代碼,並編輯以前的問題將是沒有意義的,因爲將在列表中太過分了。因此,這將是一個完全浪費時間 – user3428422

回答

3

Aplogises的重複,但猜測了,因爲在網絡上有不是足夠的材料爲這有點兒東西的幾個小時後,該解決方案是

   </DataGridTemplateColumn.CellTemplate> 
       <DataGridTemplateColumn.CellEditingTemplate> 
        <DataTemplate> 
         <ComboBox ItemsSource="{Binding Source={StaticResource DeploymentTypeEnum}}" 
            SelectedItem="{Binding DeploymentType}" 
            **IsSynchronizedWithCurrentItem="false**"> 
         </ComboBox> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellEditingTemplate> 

IsSynchronizedWithCurrentItem - 做它在錫上說的。但是,當您選擇一個項目時,當前的項目會消失,但至少不會更新所有行。

相關問題