我使用的Listbox将ItemsPanelTemplate设置为Canvas。这样我就可以将多边形定位在画布上并且仍然可以选择它们。我遇到的问题是选择区域的形状与多边形的形状不同(它是覆盖多边形范围的矩形)
<ListBox Name="LayoutList" ItemsSource="{Binding LayoutItems}" ItemContainerStyle="{StaticResource LayoutItemStyle}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Canvas x:Name="LayoutCanvas" Background="Beige">
</Canvas>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Polygon Points="{Binding Points}" Stroke="{Binding Stroke}" StrokeThickness="1"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 0 :(得分:2)
选择区域由项目容器确定;我不确定,但是你可以通过修改ListBox.ItemContainerStyle(代替DataTemplate或者除了DataTemplate之外)来做你想做的事。像这样:
<ListBox>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Polygon Points="{Binding Points}" Stroke="{Binding Stroke}" StrokeThickness="1"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>