2011-03-07 33 views
5

Tôi đang cố gắng để xây dựng một Mà usercontrol có thể đưa các yếu tố từ XAML như thế này:Làm thế nào để tạo ComboBox như UserControl trong WPF

  <ComboBox > 
       <ComboBoxItem /> 
       <ComboBoxItem /> 
       <ComboBoxItem /> 
      </ComboBox> 

Trong ComboBox, bạn có thể chỉ cần thêm Items giữa ComboBox và tôi muốn sao chép điều này, nhưng tôi không biết bắt đầu từ đâu.

Xong nó sẽ giống như thế này:

<cis:ReportControl Grid.Row="3"> 
      <cis:ReportItem /> 
    </cis:ReportControl> 

Trong cis:ReportControl, có một số Button s và một ComboBox, và về cơ bản tôi chỉ muốn để nuôi ComboBox với Items.

Mục báo cáo chỉ là ComboBoxItem với một số thuộc tính bổ sung.

Edit:

Tôi đã thực hiện nó theo @Snowbears câu trả lời, nhưng vấn đề bây giờ là sự kiểm soát có chính nó như là một mục. Tôi nghĩ rằng điều này là do tôi có một số nội dung, và bằng cách xác định ContentProperty đến ComboBox của tôi, nó được chuyển hướng vào Hộp. Tôi có thể làm gì để tránh điều này?

Sửa II:

Nó hoàn toàn làm việc bây giờ với điều này:

private ItemCollection reportItems; 
    public ItemCollection ReportItems 
    { 
     get 
     { 
      if (reportItems == null) 
      { 
       reportItems = this.ComboBoxReports.Items; 
      } 
      return reportItems; 
     } 
    } 

với [ContentProperty("ReportItems")] Thuộc tính. ComboBoxReports là ComboBox trong Control, và tôi đã kế thừa từ ItemsControl để làm cho nó hoạt động.

Trả lời

4
  1. Bạn nên tạo thuộc tính trong UserControl của mình để hiển thị nội dung nào đó triển khai giao diện IList. Giả sử thuộc tính này sẽ có tên là ReportItems. Thuộc tính này không nên có setter và nó phải được khởi tạo trong UserControl chính nó hoặc trong constructor trong bằng cách khởi tạo trường trên lĩnh vực sao lưu.
  2. UserControl nên được đánh dấu bằng ContentProperty thuộc tính với tên thuộc tính của bạn (ReportItems)
  3. combobox nội nên có nó ItemsSource ràng buộc về tài sản ReportItems UserControl của
0

nếu bạn tìm kiếm để How Create own Control Bạn phải tìm kiếm hai điều:

1) Custom Control1 hoặc User Control1 (nó phụ thuộc vào 0.123.438 của bạn)
2) Dependency Properties (sử dụng chúng trong kiểm soát)

Tôi nghĩ rằng bạn có thể cần phải sử dụng Custom-Control và bạn cũng có thể kế thừa của bạn tuỳ chỉnh-Control từ ComboBox hoặc Controls khác.

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