2016-04-29 8 views
0

MSDNは言う:「ComboBoxItemのインラインコレクション」

ドロップダウンリストを移入するには、まず以下のいずれかのオプションを使用することにより ComboBoxのためにItemsSourceプロパティを設定します。

  • 静的リソース。詳細については、StaticResource Markup Extensionを参照してください。
  • x:静的コードエンティティ。詳細は、「x:静的マークアップ拡張機能」を参照してください。
  • ComboBoxItem型のインラインコレクションです。

"ComboBoxItemタイプのインラインコレクション" と私はこのような何かについて考えた:

<DataGrid> 
    <DataGrid.Columns> 
    <DataGridComboBoxColumn> 
     <ComboBoxItem Content="None" Tag="0" /> 
     <ComboBoxItem Content="Few" Tag="1" /> 
     <ComboBoxItem Content="Some" Tag="2" /> 
     <ComboBoxItem Content="Enough" Tag="3" /> 
     <ComboBoxItem Content="Lots" Tag="4" /> 
     <ComboBoxItem Content="Too much" Tag="5" /> 
    </DataGridComboBoxColumn> 
</DataGrid.Columns> 
</DataGrid> 

しかし、それはない作品を行います。私は、DataGridComboBoxColumnを取り込むための別のメソッドについて知っていますが、私はそれについて興味がありません。私の研究では何も見つかりませんでした... "Inline collection of ComboBoxItem types"はどういう意味ですか?

答えて

1

ここで重要なことはDataGridComboBoxColumnComboBoxではなく、引用したドキュメントの一部が適用されません。

なぜ列の定義にComboBoxItem要素を追加できないのかは、視覚的なツリーに複数回追加するという問題を引き起こすことになります(それぞれのアイテムに「再利用」されることになるごとにComboBoxクローンよりも)。

私が知る限り、DataGridComboBoxColumnはわずかな数のComboBoxプロパティを公開する列定義であり、デフォルトでComboBoxとして表示されます。私の要点は、DataGridTemplateColumnで実現できない機能はありません。

は、ここで作業を開始すべき代替テイクです:

前のシナリオにXAMLプロセッサは、実際に FrameworkElementFactoryに変換していることを意味 ComboBoxItem要素が DataTemplate内で定義されているので、それが動作します。この時間は、対照的に
<DataGrid> 
    <DataGrid.Columns> 
     <DataGridTemplateColumn> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <ComboBox> 
         <ComboBoxItem Content="None" Tag="0" /> 
         <ComboBoxItem Content="Few" Tag="1" /> 
         <ComboBoxItem Content="Some" Tag="2" /> 
         <ComboBoxItem Content="Enough" Tag="3" /> 
         <ComboBoxItem Content="Lots" Tag="4" /> 
         <ComboBoxItem Content="Too much" Tag="5" /> 
        </ComboBox> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

オブジェクトは、オンデマンドでテンプレートのComboBoxItem要素を生成することができます。

関連する問題