我试图通过WPF更好地理解模板系统。我的设计目标是,我正在尝试重新设计我使用的软件包的组件,以使用WPF而不是2D Graphics Librarys。现在的问题是屏幕上有2000个实体,在强大的i7工作站上平移和缩放是非常滞后的。我希望在WPF中重新开发它以提高性能。
正如测试一样,我创建了一个新项目并使用Canvas创建了一个基本的XAML / WPF视图。此画布显示省略号(基本上我正在构建用于规划目的的2D地图,其中包含不同颜色的圆圈以显示不同的内容)。
现在,根据圆圈的模型(圆圈A或圆圈B),我可以使用DataTemplate显示我的圆圈。当我将鼠标放在圆圈上时,我的窗口后面有默认的“蓝框”区域,我希望将其移除。到目前为止,我已经设法使用触发器来改变鼠标上的圆形颜色,但我仍然有悬停区域。
get
我创建了自己的ListBox控件,它将ListBoxItems定位在画布内的X,Y位置。
<DataTemplate x:Key="HoleBTemplate">
<Grid Width="40" Height="40">
<Ellipse>
<Ellipse.Style>
<Style TargetType="Ellipse">
<Setter Property="Fill" Value="DeepSkyBlue"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Fill" Value="Yellow" />
</Trigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
<Ellipse Fill="White" Margin="1" IsHitTestVisible="False" />
<TextBlock
VerticalAlignment="Center"
TextAlignment="Center"
HorizontalAlignment="Center"
Text="{Binding Name}"
IsHitTestVisible="False">
</TextBlock>
<Grid.RenderTransform>
<TranslateTransform X="-20" Y="-20" />
</Grid.RenderTransform>
</Grid>
</DataTemplate>
TLDR:如何摆脱鼠标悬停在圆圈后面的蓝色高光区?
答案 0 :(得分:0)
来自Wayne Lo的链接主题的回答。
<Style TargetType="ListBoxItem">
<Setter Property="IsSelected" Value="{Binding Content.IsSelected, Mode=TwoWay, RelativeSource={RelativeSource Self}}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<ContentPresenter/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>