2017-08-09 33 views
0

DataGridComboBoxColumnDataGridTemplateColumnに変更しようとしましたが、成功しませんでした。予想通りWPF DataGrid Combobox Binding

DataGridComboBoxColumnは機能していますが、DataGridTemplateColumnでのコンボボックスではありません。私は、このコンボボックスで値を変更した場合、それはすべての見える行のすべての見えるコンボボックスの値を変更します。

私は、私は何が欠けていますか?本表に国(ID)を設定するために使用され

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

:このような

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

DataGridComboboxColumn

DataGridがこのようなものです。 Books(bookViewSource)とCountry(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

これは私の問題を解決しました:

はDataGridTemplateColumnでコンボボックスにIsSynchronizedWithCurrentItem = "false" に追加し、MM8が示唆されているようにソース= {StaticResource bookViewSource}を削除します。

0

Source={StaticResource bookViewSource}を削除します。

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

削除されました。追加の問題が発生しました。表示されている行のデータベースも変更されています。つまり、1行目の国を選択すると、データベースの表示されている行の国が変更されます。 – Prodromos

+0

Bookエンティティクラスには、ブックの現在選択されているプロパティのIDを保持するCountryプロパティが設定されています。このプロパティは、データベース内の項目を選択するときに設定されます。 – mm8

+0

はい、正しいです。これは、コンボボックスから選択されたIDであるCountryプロパティを持ちます。奇妙なのは、DataGridComboboxColumnが正常に動作しているということです。しかし、Tamplatecomumnはそうではありません! – Prodromos