Silverlight - 如何使列表框选择区域与列表框项目具有相同的形状

时间:2011-06-02 04:26:15

标签: silverlight

我使用的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>

1 个答案:

答案 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>