2009-12-14 22 views
5

Xin chào tôi đang sử dụng DataGrid WPF và tôi đang cố gắng để có được ComboBox Cột để làm việc.WPF DataGridComboBoxColumn

<tk:DataGridComboBoxColumn Header="GroupLevel" 
          DisplayMemberPath="Type" 
          SelectedItemBinding="{Binding Path=GroupLevel}" 
          > 
    <tk:DataGridComboBoxColumn.EditingElementStyle> 
     <Style TargetType="ComboBox"> 
      <Setter Property="ItemsSource" Value="{Binding Path=GroupLevel.Group.GroupLevels}" /> 
     </Style> 
    </tk:DataGridComboBoxColumn.EditingElementStyle> 

</tk:DataGridComboBoxColumn> 

Khi tôi nhìn vào lưới, cột trống, như không sử dụng đường dẫn thành viên hiển thị. Nhưng một khi tôi nhấp vào cột, combobox hiển thị và hiển thị tất cả các mục trong ItemsSource của tôi và chọn một mục thích hợp, vì vậy tôi biết các ràng buộc tất cả đều hoạt động chính xác, ngay cả DisplayMemberPath. Chỉ khi tôi không chỉnh sửa ô, nó hiển thị trống.

Tôi đã bỏ lỡ một số tài sản ở đâu?

Cảm ơn, Raul

Trả lời

14

im khá chắc chắn rằng đây là bởi vì khi bạn đang không ở trong chế độ chỉnh sửa cột của bạn không có một nguồn các mặt hàng và một ComboBox không thể có một sản phẩm được chọn mà không có một nguồn vật. ngay sau khi bạn chuyển sang chế độ chỉnh sửa, cột của bạn sẽ nhận được nguồn mục và mọi thứ đều tuyệt vời. bạn có thể sửa lỗi này bằng cách xác định một nguồn mặt hàng như sau: -

<tk:DataGridComboBoxColumn.ElementStyle> 
    <Style TargetType="ComboBox"> 
     <Setter Property="ItemsSource" Value="{Binding Path=GroupLevel.Group.GroupLevels}" /> 
    </Style> 
</tk:DataGridComboBoxColumn.ElementStyle> 

sau đó cả hai yếu tố chỉnh sửa của bạn và nguyên tố của bạn (không chỉnh sửa) có ItemsSource cùng

+0

Bạn sẽ không tin CÁCH cứng này đã được để tìm thấy. Tôi không biết trạng thái chế độ không chỉnh sửa vẫn có một hộp tổ hợp trong đó. Tôi nghĩ đó chỉ là một khối chữ. Cảm ơn bạn một lần nữa! – HaxElit

+1

hơi lạ một chút. Tôi đã tìm thấy làm việc thông qua các mã cho DataGrid thực sự cho phép bạn ở trên một vài thủ thuật. mã để xem xét là hàm GenerateElement trong DatagridComboColumn, chúng có một hộp kết hợp chỉ hiển thị. Tôi nhập các nguồn dữ liệu vào dự án của tôi và khi tôi hoàn thành tôi thay thế nó bằng một tham chiếu dll thẳng. –

+3

Bạn có biết nếu có thể có comboBox hiển thị ngay cả trong ViewMode. Tôi muốn người dùng của tôi biết điều đó, đó là một ComboBox – MBen