如何使主ItemsControl的另一個ItemsControl的另一個ItemsControl的ItemTemplate
作爲ItemsPanel
? (我沒有看到它應該只顯示第一層的原因)
其實主要的ItemsControl不需要是一個Canvas,一個Grid也可以做到這一點(至少除非你的集合有自己的座標或Z順序,如果您使用網格,則圖層順序與它們在集合中的外觀相同)。
一個例子(有點冗長,但不能做任何事情):
<ItemsControl ItemsSource="{Binding Data}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding LayerItems}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="{x:Type ContentPresenter}">
<!-- Here would the binding to some properties that take care of placement -->
<Setter Property="Canvas.Top" Value="{Binding Top}" />
<Setter Property="Canvas.Left" Value="{Binding Left}" />
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<!-- Some template for the individual items -->
<DataTemplate>
<Border Padding="5" BorderThickness="1" BorderBrush="Red" CornerRadius="3"
Background="White">
<TextBlock Text="{Binding Name}" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
謝謝!這是我試圖實現的初始解決方案,但我想我做錯了什麼。它現在工作正常,再次感謝。 – ssaammuueell
不客氣,很高興幫助:) –