2017-07-14 6 views
0

ItemsControlが各アイテムのContentPresenterを作成していないのはなぜですか?私はこれが私のアイテムが表示されないようにしていることを推測しています(私はライブビジュアルツリーを使用して検査するときに、表示され、適切な場所に設定されています)。私は基本的に上記の別のItemsControlで動作するコードを再利用しています。この問題でGoogle/Stackoverflowを検索しているうちに何かを見つけることができませんでした。ビューモデルコードを含めることはできますが、ライブプロパティエクスプローラで適切な値が表示され、各ウェルコンテナが適切なグリッドセルにあることがわかるため、関連するとは思われません。ItemsControl ContentPresenterを作成していません

XAML:

<ItemsControl 
    Grid.Row="1" 
    Grid.Column="1" 
    ItemsSource="{Binding Wells}"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Grid 
       x:Name="m_WellGrid" 
       Margin="5" 
       wpf:GridHelpers.RowCount="{Binding RowCount}" 
       wpf:GridHelpers.ColumnCount="{Binding ColumnCount}"> 
      </Grid> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemContainerStyle> 
     <Style> 
      <Setter 
       Property="Grid.Row" 
       Value="{Binding Path=WellRow}"/> 
      <Setter 
       Property="Grid.Column" 
       Value="{Binding Path=WellCol}"/> 
     </Style> 
    </ItemsControl.ItemContainerStyle> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <TextBlock 
       Text="A" 
       Margin="4"/> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

ライブビジュアルツリーの検査:

enter image description here

+0

「WellContainer」はどこに定義されていますか?あなたは明示的に 'ContentPresenter'を定義していますか? –

+0

私のビューモデルは 'WellContainer'の' ObservableCollection'を持ち、 'WellContainer'は' Control'を継承した同じプロジェクトの単なるクラスです。いいえ、私は明示的に 'DataTemplate'の' ContentPresenter'を明示的に定義していません。これは近くで動作するように思われる他の2つのケースで行ったことです。 – m4gik

+0

あなたのコンテンツが存在し、あなたが言うように正しい場所に 'Z-Index'をチェックし、何かの背後に隠れていないことを確認してください。 –

答えて

1

項目がないときItemsControlは、つまり、必要なときだけ、コンテナ内の項目を包むように設計されています独自のコンテナになることができます。あなたのコメントから、WellContainerControlに由来することがわかります。したがって、独自のコンテナの資格があり、ContentPresenterでラップされていません。残念ながら、この動作を直接制御する方法はありませんが、ItemsControlをサブクラス化し、ItemsControl.IsItemItsOwnContainerOverrideメソッドをオーバーライドしてデフォルトの動作を変更することができます。


我々は、アイテムが独自のコンテナであることが資格を得るためにUIElement型であるため、それは十分にあるItemsControlsource codeで見ることができるように。

+2

ビューモデルでコントロールのコレクションを持つことは悪い考えです。 1つのItemsControlを同時に使用することができます。なぜなら、UI要素には1つの親しか持たないからです。つまり、複数の親要素の子ではないからです。 – Clemens

+0

ありがとう、ありがとう、私は解決策を思いつき、質問を更新しようとします。 – m4gik

関連する問題