所以我有一个很大的网格,可以在其中处理带有边距的坐标。
现在,我有了一个带有图标(图像)的列表,应该在特定的坐标处显示。
我将ItemsControl与带有图像的DataTemplate一起使用来显示它们。
我的问题是,如果我生成第一个图像,它就在正确的位置,但是如果我现在生成下一个图像,它将在正确的X坐标上显示,但是每次在第一个和下一个图像之间都有一个空格。
所以我的问题是:如何显示图像列表,该列表在运行时会变大,并且在较大的Grid元素中具有边距坐标?
(而且我不希望有列等。)
代码以便更好地理解:
<Grid Width="4045" Height="2823">
<ItemsControl Width="4045" Height="2823" ItemsSource="{Binding AllPoI, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" VerticalAlignment="Top" >
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type poi:PointOfInterest}">
<Image Margin="{Binding MarginCoordinates}" Height="16" Width="16" HorizontalAlignment="Left" VerticalAlignment="Top" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
尝试Clemens的评论(这很完美,这是Answere):
<Grid Width="4045" Height="2823">
<ItemsControl Width="4045" Height="2823" ItemsSource="{Binding AllPoI, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" VerticalAlignment="Top" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Left" Value="{Binding PosX}"/>
<Setter Property="Canvas.Top" Value="{Binding PosY}"/>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type poi:PointOfInterest}">
<Image Height="16" Width="16"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
//This Canvas below gets the same coordinates as the newest Entry on my List. this Canvas is displayed on the correct Position, the list entry not.
<Canvas Height="{Binding Gridsize, UpdateSourceTrigger=PropertyChanged}" Width="{Binding Gridsize, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Margin="{Binding GridSelectorPosition}" VerticalAlignment="Top" Visibility="{Binding GridSelectorVisibility, Converter={StaticResource VisibleWhenBoolIsTrueConverter}}">
<Rectangle Stroke="Red" Fill="Red" Opacity=".3" Width="{Binding Gridsize, UpdateSourceTrigger=PropertyChanged}" Height="{Binding Gridsize, UpdateSourceTrigger=PropertyChanged}"/>
</Canvas>
</Grid>