2009-12-05 4 views
0

Dans mon projet WPF, j'ai un contrôle personnalisé qui est représenté visuellement par un objet rectangle. En XAML j'ai mis un certain nombre de rectangles basés sur ce contrôle personnalisé. L'utilisateur devrait être capable de sélectionner un groupe de ces rectangles par des clics de souris, puis de faire quelques actions avec ces rectangles sélectionnés.WPF "Selected" Propriété de contrôle personnalisé ou "Focus logique". Que devrait-on utiliser?

Comment dois-je mettre en œuvre la possibilité de sélection: (1) devrais-je simplement ajouter une autre propriété personnalisée, par ex. "Sélectionné" et le changer dans les gestionnaires d'événements MouseClick ou (2) devrais-je utiliser la fonctionnalité native "Logical Focus"?

Répondre

1

Je dirais que si vous développez la logique de sélection dans votre contrôle, vous pouvez dupliquer des fonctionnalités déjà fournies par les sous-classes Selector existantes telles que ListBox. Pourquoi ne pas simplement héberger des instances de votre contrôle à l'intérieur d'un ListBox et lui laisser faire la logique de sélection?

+0

Merci Kent. Concernant la mise en page visuelle - si j'ai besoin, disons, de 20 lignes horizontales de tels rectangles, puis-je utiliser 20 ListBox? – rem

+0

Non, vous devez utiliser un ListBox mais modifier son ItemsPanel pour qu'il soit un Panel répondant à vos besoins de disposition. Il utilise un StackPanel par défaut, ce qui explique pourquoi chaque élément est placé en dessous du précédent, mais vous pouvez l'échanger pour un autre panneau, ou même écrire votre propre panneau et le coller là-dedans. –

+0

OK, merci. S'il vous plaît, encore une petite question: J'ai essayé de construire ListBox comme vous l'avez dit et je vois que le fait que l'élément IsSelected montre visuellement par la couleur bleu foncé de la ListBox lui-même mais le rectangle dans cet ItemBox reste tel quel. Existe-t-il un moyen de changer ceci vice versa (la couleur a changé seulement sur le rectangle lui-même)? Où je devrais chercher ça? – rem

Questions connexes