2010-06-20 16 views
6

DataGridComboBoxColumn'umdaki bir hücreyi tıklattığımda, ComboBox görünür hale gelir ve öğeleri seçebilirim. Bir öğeyi seçtiğimde bunun en üstte görünür olması. Ama hücre aka ComboBox odağı kaybettiğinde, DataGrid'de farklı bir şey tıklıyorum, daha önce seçtiğim hücrede artık görünen bir öğe/metin yok.DataGridComboBoxColumn seçim değiştiğinde içeriğini kaybeder

Seçimi/seçili metni nasıl saklayabilirim?

<DataGridComboBoxColumn 
      Width="*" 
      Header="Monday" 
      DisplayMemberPath="SchoolclassName" 
      SelectedValueBinding="{Binding SchoolclassCodeMonday}" 
      ItemsSource="{Binding Source={StaticResource ClassCodes}}"> 

    <DataGridComboBoxColumn.ElementStyle> 
     <Style TargetType="ComboBox"> 
      <Setter Property="IsSynchronizedWithCurrentItem" Value="False" /> 
      <Setter Property="ItemsSource" 
        Value="{Binding Source={StaticResource ClassCodes}}" /> 
     </Style> 
    </DataGridComboBoxColumn.ElementStyle> 

    <DataGridComboBoxColumn.EditingElementStyle>     
     <Style TargetType="ComboBox"> 
      <Setter Property="ItemsSource" 
        Value="{Binding Source={StaticResource ClassCodes}}" /> 
      <Setter Property="IsDropDownOpen" Value="True" /> 
     </Style>     
    </DataGridComboBoxColumn.EditingElementStyle> 
</DataGridComboBoxColumn> 

benim sorun için bir çözüm gibi görünüyor:

kodumu şu http://wpf.codeplex.com/Thread/View.aspx?ThreadId=46627 (alta kaydırma) ama benim sorununa çözüm aktaramaz. Çünkü benim model kurulumum oldukça farklı.

SchoolclassName SchoolclassCodeMonday aka SchoolclassCodes türü ObservableCollection bir özelliktir TimeTable.cs bir dize özelliğidir ClassCodes Schoolclass.cs bir dize özelliğidir | Schoolclass |

Birisi bağlarımı nasıl düzelteceğimi biliyor mu?

+1

mevcut kodu: Eklediğim aşağıda ve ben combobox ayrılırken şimdi SchoolclassCode hücrede kalır. Normalde SelectedValuePath için bir kimlik kullanırsınız, ancak "ID" zaten benzersiz olan SchoolclassCode'dur. SelectedValuePath = "SchoolclassName" Bu sadece benim için çalışıyor ... ben daha iyi bir açıklama veya daha fazla teknik içeriden bilgi yok ama bana biraz yardım ettiğini buradan okuyabilirsiniz: http: //blogs.msdn .com/b/vinsibal/arşiv/2008/10/31/wpf-datagrid-datagridcomboboxcolumn-v1-intro.aspx – msfanboy

cevap

1

Muhtemelen artık gerekli olmadığını biliyorum ama belki başkalarına yardımcı olacaktır. ComboBox'ınızın değiştiğinde bağlamayı güncellemesi gerekmiyor mu? Örneğin.

SelectedValueBinding="{Binding SchoolclassCodeMonday}" 

olacaktır: mülk gözlemlenebilir koleksiyonu kodundan değiştiğinde

SelectedValueBinding="{Binding SchoolclassCodeMonday, 
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 

Ayrıca bir bildirim ateş emin olun. 1 DisplayMemberPath = "SchoolclassName" yukarıda olarak adam @Bir

İlgili konular