1
我想通過WPF更好地瞭解模板系統。我的設計目標是,我試圖重新設計一個我正在使用WPF而不是2D圖形庫的軟件包的組件。現在的問題是,在屏幕上有2000個實體,平移和縮放對於強健的i7工作站來說非常滯後。我希望在WPF中重新開發它來提高性能。MouseOver的DataTemplate ListBoxItem
就像測試一樣,我創建了一個新項目並使用Canvas創建了基本的XAML/WPF視圖。此畫布顯示橢圓(基本上,我正在爲計劃目的構建一個2D地圖,其中包含不同顏色的圓以顯示不同的內容)。
現在,我使用DataTemplate根據圓圈的類型(圓圈A或圓圈B)顯示了我的圓圈。當我將鼠標懸停在圓上時,我在窗口後面有默認的「藍色框」區域,我希望刪除它。到目前爲止,我已經設法使用觸發器來改變鼠標上的圓形顏色,但我仍然有懸停區域。
<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>
我創建了在X,畫布裏面Ÿ佈置位置的ListBoxItems我自己的ListBox控件。
<controls:ListBoxMap ItemsSource="{Binding Holes}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas></Canvas>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplateSelector>
<controls:PlanTemplateSelector
HoleATemplate="{StaticResource HoleATemplate}"
HoleBTemplate="{StaticResource HoleBTemplate}"/>
</ItemsControl.ItemTemplateSelector>
</controls:ListBoxMap>
TLDR:如何擺脫鼠標旋轉後的藍色高亮區域?
的可能的複製[如何禁用高亮顯示在列表框中,但保持選擇?(http://stackoverflow.com/questions/4343793/how-to-disable-highlighting-on-listbox-but-keep-選擇) – lokusking
現在將閱讀上面的內容並應用,如果重複 –