У вас есть более одного элемента в пределах DataTemplate
. Вам нужно было бы поместить ваши два объекта Path
в какой-то Panel
, например, Grid
. Вопрос в том, где все ваши координаты холста рассчитаны так, что вы можете привязать его к Grid
? В вашей модели зрения? Тогда вы могли бы связать с ним, и это может выглядеть примерно так:
<ItemsControl ItemsSource="{Binding ViewModels}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Canvas.Top="{Binding Y}" Canvas.Left="{Binding X}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Path Stroke="CornflowerBlue" StrokeThickness="2">
<Path.Data>
<PathGeometry Figures="{Binding Figures}"/>
</Path.Data>
</Path>
<Path Stroke="Red" StrokeThickness="2" Grid.Row="1">
<Path.Data>
<PathGeometry Figures="{Binding Figures2}"/>
</Path.Data>
</Path>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
В случае, если у вас нет этих координат, то я бы рекомендовал использовать другое значение для ItemsPanelTemplate
как VirtualizedStackPanel
. Это может выглядеть следующим образом:
<ItemsControl ItemsSource="{Binding ViewModels}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizedStackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Path Stroke="CornflowerBlue" StrokeThickness="2">
<Path.Data>
<PathGeometry Figures="{Binding Figures}"/>
</Path.Data>
</Path>
<Path Stroke="Red" StrokeThickness="2" Grid.Row="1">
<Path.Data>
<PathGeometry Figures="{Binding Figures2}"/>
</Path.Data>
</Path>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Если бы вы могли сказать мне, что на самом деле ваш пытается достичь, я уверен, что я могу помочь вам в лучшую сторону.
Я думал, что у меня появятся элементы холста, но, взглянув на ваш пример, я вижу, что мне нужен второй элемент ItemsControl внутри моего шаблона, где я включаю элементы холста. – Brannon