Wpf 如何仅选择线型而不选择大正方形

Wpf 如何仅选择线型而不选择大正方形,wpf,xaml,listview,selecteditem,Wpf,Xaml,Listview,Selecteditem,我正在处理一个WPF项目,该项目有一个绑定到集合的ListBox。此列表框显示画布中的元素,因为这些元素是省略号和行 我正在开发一个可以绘制实体(椭圆)和连接器(线)的应用程序。这已经起作用了 我还希望能够选择一个椭圆或一条直线,我已经可以这样做了,因为这个功能是由列表框提供的。然而,当我选择一条线时,所选的线看起来像一个丑陋的蓝色大正方形 有没有办法只选择纯线? 下面是我当前的ListBox实现的样子: <ListBox ItemsSource="{Binding Elements}"

我正在处理一个
WPF
项目,该项目有一个绑定到集合的
ListBox
。此
列表框
显示画布中的元素,因为这些元素是
省略号

我正在开发一个可以绘制实体(
椭圆
)和连接器(
线
)的应用程序。这已经起作用了

我还希望能够选择一个
椭圆
或一条
直线
,我已经可以这样做了,因为这个功能是由
列表框
提供的。然而,当我选择一条线时,所选的线看起来像一个丑陋的蓝色大正方形

有没有办法只选择纯线?

下面是我当前的ListBox实现的样子:

<ListBox ItemsSource="{Binding Elements}" >            
    <ItemsControl.ItemContainerStyle>
        <Style>
            <Style.Resources>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
                         Color="Transparent"/>
            </Style.Resources>
            <Setter Property="Canvas.Left" Value="{Binding CanvasLeft}" />
            <Setter Property="Canvas.Top" Value="{Binding CanvasTop}" />
            <Setter Property="Panel.ZIndex" Value="{Binding ZIndex, Mode=TwoWay}" />
        </Style>
    </ItemsControl.ItemContainerStyle>
    <ItemsControl.Resources>
        <DataTemplate DataType="{x:Type vm:EntityViewModel}" >
            <Viewbox>
                <Grid>
                    <Ellipse myb:DraggableBehavior.IsDraggingEnabled="True"
                            Stroke="Black" 
                            Width="{Binding ShapeWidth, Mode=TwoWay}" 
                            Height="{Binding ShapeHeight, Mode=TwoWay}" 
                            Canvas.Left="{Binding X1, Mode=TwoWay}"
                            Canvas.Top="{Binding Y1, Mode=TwoWay}"
                            Fill="{Binding Background}" 
                            Panel.ZIndex="{Binding ZIndex, Mode=TwoWay}" >
                    </Ellipse>
                    <TextBlock Text="{Binding StatePropertiesViewModel.Name}"
                           HorizontalAlignment="Center"  
                           TextAlignment="Center" 
                           VerticalAlignment="Center" />
                </Grid>
            </Viewbox>
        </DataTemplate>
        <DataTemplate DataType="{x:Type vm:LineViewModel}" >
            <Line X1="{Binding X1, Mode=TwoWay}"
                  Y1="{Binding Y1, Mode=TwoWay}"
                  X2="{Binding X2, Mode=TwoWay}"
                  Y2="{Binding Y2, Mode=TwoWay}"
                  Stroke="{Binding Color, Mode=TwoWay}"
                  StrokeThickness="{Binding Thickness, Mode=TwoWay}"
                  Panel.ZIndex="{Binding ZIndex, Mode=TwoWay}"
                  />
        </DataTemplate>
    </ItemsControl.Resources>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>            
</ListBox>

更新

按照@AbhinavSharma的建议:

    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
                         Color="Transparent"/>
    </Style.Resources>

看起来蓝色方形选择区域现在不可见,看起来更好。但是,它仍然存在,因为,例如,如果我在
椭圆
上有一个
线
形状,我无法选择椭圆,因为不可见的选定线区域仍然存在。i、 当我点击它时,我选择的是直线,而不是椭圆。因此,有没有办法将选择区域缩小到形状本身的区域?


提前感谢。

我认为“丑陋的蓝色大方块!”是listbox的SelectedItem的默认模板。您是否尝试更改所选项目的模板。可能会对你有帮助。@AbhinavSharma我不知道,你能给我指个正确的方向吗?你看过链接了吗。它有用吗?试试设置itemcontainer style@AbhinavSharma谢谢你的回复。对于蓝色形状的背景,它似乎起作用,现在它是不可见的,但是,它仍然在那里,因此,例如,如果在elllipse的顶部有一条线,我无法选择椭圆,因为不可见的线选择区域在那里,并且阻止我这样做。那么,有没有办法将所选区域缩小为形状区域?我认为“丑陋的蓝色大方块!”是listbox的SelectedItem的默认模板。您是否尝试过更改所选项目的模板。可能会对你有帮助。@AbhinavSharma我不知道,你能给我指个正确的方向吗?你看过链接了吗。它有用吗?试试设置itemcontainer style@AbhinavSharma谢谢你的回复。对于蓝色形状的背景,它似乎起作用,现在它是不可见的,但是,它仍然在那里,因此,例如,如果在elllipse的顶部有一条线,我无法选择椭圆,因为不可见的线选择区域在那里,并且阻止我这样做。那么,有没有办法将选定区域缩小为形状区域?