2011-03-07 11 views
5
私はユーザーコントロールウィッヒを構築しようとしている

は次のようにXAMLから要素を取ることができます:WPFでユーザーコントロールのようにコンボボックスを作成する方法

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

ComboBoxで、あなただけのComboBox間でアイテムを追加することができますタグをコピーしたいと思いますが、どこから始めるべきかわかりません。

が、それは次のようになります終了:cis:ReportControl

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

を、そこにいくつかButton sおよびComboBoxがあり、基本的に私は唯一のアイテムでComboBoxを供給します。

レポート項目は、いくつかの追加プロパティを持つComboBoxItemです。

編集:

私は@Snowbears答えに応じてそれを実装しましたが、問題は今、コントロールがアイテムとしての地位を有していることです。 これは私がいくつかのコンテンツを持っているからだと思って、を私の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. IListインターフェイスを実装するものを公開するUserControlにプロパティを作成する必要があります。このプロパティの名前はReportItemsとしましょう。このプロパティはsetterを持つべきではなく、UserControl自体のコンストラクタで、バッキングフィールドのフィールド初期化によって初期化する必要があります。
  2. のUserControlあなたのプロパティ名とContentProperty属性でマークされなければならない(ReportItems
  3. 内部コンボボックスは、あなたがHow Create own Controlに探している場合は、二つのものを探す必要があり、それがItemsSourceがUserControlのReportItemsプロパティ
0

にバインドされています持っている必要があります。

1)Custom Control1またはUser Control1(それはあなたのに依存しています)
2)Dependency Properties(コントロールにそれらを使用)

私はあなたがカスタムコントロールを使用する必要があるかもしれないし、また、あなたがComboBoxまたは他のコントロールからカスタム・コントロールを継承することができると思います。