2010-06-20 40 views
6

Khi tôi bấm vào một ô trong DataGridComboBoxColumn của tôi, ComboBox hiển thị và tôi có thể chọn các mục. Khi tôi đã chọn một mục của nó có thể nhìn thấy ở đầu thats tốt. Nhưng khi các tế bào aka ComboBox mất tập trung của nó bởi vì tôi nhấp vào một cái gì đó khác nhau trong DataGrid sau đó không có mục/văn bản có thể nhìn thấy nữa trong tế bào tôi đã chọn trước đó.DataGridComboBoxColumn mất nội dung khi lựa chọn thay đổi

Làm cách nào để giữ lựa chọn đó/văn bản đã chọn?

thats mã của tôi:

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

có vẻ là một giải pháp cho vấn đề của tôi: http://wpf.codeplex.com/Thread/View.aspx?ThreadId=46627 (cuộn xuống phía dưới) nhưng tôi không thể chuyển các giải pháp cho vấn đề của tôi. Bởi vì thiết lập mô hình của tôi là khá khác nhau.

SchoolclassName là một tài sản chuỗi trong Schoolclass.cs SchoolclassCodeMonday là một tài sản chuỗi trong TimeTable.cs ClassCodes aka SchoolclassCodes là một loại tài sản của ObservableCollection | Schoolclass |

Ai đó biết cách sửa lỗi ràng buộc của tôi?

+1

@to anh chàng đã bình chọn, 1 DisplayMemberPath = "SchoolclassName" trên là mã hiện tại: dưới đây tôi đã thêm và bây giờ là SchoolclassCode vẫn trong tế bào khi tôi rời khỏi combobox. Thông thường bạn sử dụng một ID cho SelectedValuePath nhưng "ID" của tôi là SchoolclassCode mà đã là duy nhất. SelectedValuePath = "SchoolclassName" Nó chỉ hoạt động cho tôi ..., tôi không có giải thích tốt hơn hoặc nhiều kiến ​​thức nội bộ kỹ thuật hơn nhưng bạn có thể đọc ở đây đã giúp tôi một chút: http: //blogs.msdn .com/b/vinsibal/lưu trữ/2008/10/31/wpf-datagrid-datagridcomboboxcolumn-v1-intro.aspx – msfanboy

Trả lời

1

Tôi biết nó có lẽ không cần thiết nữa nhưng có lẽ nó sẽ giúp người khác. ComboBox của bạn có cần phải cập nhật liên kết khi thay đổi không? ví dụ.

SelectedValueBinding="{Binding SchoolclassCodeMonday}" 

sẽ là:

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

Cũng chắc chắn rằng bạn đang bắn một thông báo khi tài sản được thay đổi từ mã trên bộ sưu tập quan sát của bạn.

Các vấn đề liên quan