私はWPFでテンプレートシステムをよりよく理解しようとしています。ここでの設計目標は、2Dグラフィックスライブラリの代わりにWPFを使用するソフトウェアパッケージのコンポーネントを再設計しようとしていることです。今のところ問題は、画面上に2000個のエンティティがあるため、パンとズームは非常に控えめなi7ワークステーションでは遅いということです。私はパフォーマンスを改善するためにWPFで再開発したい。DataTemplate ListBoxItem for MouseOver
テストと同様に、私は新しいプロジェクトを作成し、キャンバスで基本的なXAML/WPFビューを作成しました。このキャンバスには省略記号が表示されています(基本的には、さまざまな色の円を描いていて、さまざまなことを示すために2Dマップを作成しています)。
今、サークルがどのような種類のサークル(サークルAまたはサークルB)に応じて、DataTemplateを使用してサークルを正しく表示できます。円の上にマウスを置くと、ウィンドウのデフォルトの「青いボックス」の後ろに、削除したい領域があります。これまで私は、マウスの上で円の色を変更するためにトリガを使用することができましたが、私はまだホバーエリアを持っています。
<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、Y位置に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
上記の内容を読み、重複している場合に適用されます。 –