2010-06-20 79 views
6

當我單擊DataGridComboBoxColumn中的某個單元格時,ComboBox變得可見,我可以選擇項目。當我選擇一個項目時,它的頂部可見。但是,當單元格又名ComboBox失去了焦點時,因爲我在DataGrid中單擊了不同的東西,所以在之前選擇的單元格中沒有可見的項目/文本。當選擇發生變化時,DataGridComboBoxColumn會丟失其內容

如何保留該選擇/選定文本?

這就是我的代碼:

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

似乎是我的問題的解決方案:http://wpf.codeplex.com/Thread/View.aspx?ThreadId=46627(滾動至底部),但我不能將溶液轉移到我的問題。因爲我的模型設置完全不同。

SchoolclassName是Schoolclass.cs一個字符串屬性 SchoolclassCodeMonday是TimeTable.cs一個字符串屬性 ClassCodes又名SchoolclassCodes是類型的ObservableCollection的屬性| Schoolclass |

有人知道如何解決我的綁定?

+1

@至誰投+1 的DisplayMemberPath =「SchoolclassName」 以上的傢伙現有代碼: 下面我說現在的SchoolclassCode當我離開組合框保留在細胞中。通常你使用一個ID作爲SelectedValuePath,但我的「ID」是已經唯一的SchoolclassCode。 SelectedValuePath =「SchoolclassName」 這只是對我的作品......,我沒有更好的解釋或更多的技術內幕知識,但你可以在這裏閱讀,幫助我一下: HTTP://blogs.msdn的.com/b/vinsibal /存檔/ 2008/10/31/WPF的數據網格-datagridcomboboxcolumn-V1-intro.aspx – msfanboy 2010-06-21 19:11:51

回答

1

我知道它可能不再需要,但也許它會幫助別人。 您的ComboBox在更改時不需要更新綁定?例如

SelectedValueBinding="{Binding SchoolclassCodeMonday}" 

是:

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

另外,還要確保你正在射擊的通知時,屬性從代碼改變您觀察到的集合。

相關問題