2011-03-07 37 views
5

我試圖建立一個用戶控件至極能夠採取元素從XAML這樣的:如何在WPF用戶控件一樣創建組合框

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

ComboBox,你可以添加ComboBox之間的項目標籤,我想複製這個,但我不知道從哪裏開始。

完成了它應該是這樣的:

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

cis:ReportControl,也有一些Button S和ComboBox,基本上我只是想與項目喂ComboBox

該報告項目只是一個ComboBoxItem與一些額外的屬性。

編輯:

我根據@Snowbears答案實現了它,但現在的問題是,控制其自身作爲一個項目。 我認爲這是因爲我有一些內容,並通過將ContentProperty定義爲我的ComboBox,它被重定向到Box中。 我能做些什麼來避免這種情況?

編輯II:

它完全與這個工程現在:

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

[ContentProperty("ReportItems")]屬性。 ComboBoxReports是控件中的ComboBox,我不得不繼承ItemsControl以使其起作用。

回答

4
  1. 你應該在你的UserControl中創建屬性,這將會暴露一些實現IList接口的東西。假設這個屬性將被命名爲ReportItems。這個屬性不應該有setter,它應該在UserControl自身中初始化,或者在構造函數中通過後臺字段初始化。
  2. 用戶控件上應標有ContentProperty屬性與屬性名稱(ReportItems
  3. 內部組合框應該有它的ItemsSource勢必用戶控件的ReportItems財產
0

,如果你尋找到How Create own Control你必須尋找兩件事情:

1)Custom Control1User Control1(這取決於您need
2)Dependency Properties(在控制使用它們)

我想你可能會需要使用定製的控制,你也可以從ComboBox或其他控件繼承您的自定義控制能力。