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的顶部有一条线,我无法选择椭圆,因为不可见的线选择区域在那里,并且阻止我这样做。那么,有没有办法将选定区域缩小为形状区域?