Hi to all,
I would avoid that user click single item of group.
Sequence to reproduce behaviour:
- Group more items
- Unselect group
- Click on group and group id selected
- Click again on single item (of group) and selected item is only item that I clicked.
I would that step no. 4 did not have any effect.
To highlight selected items, I have write code into SelectionChanged event, where I change background and foreground of selected item.
01.
private
void
topRadDiagram_SelectionChanged(
object
sender, SelectionChangedEventArgs e)
02.
{
03.
//Deselezione degli oggetti
04.
foreach
(var item
in
e.RemovedItems)
05.
{
06.
if
(item
is
RadDiagramShape deselectedItem)
07.
{
08.
deselectedItem.Background = ColorHelper.IMBALLO;
09.
deselectedItem.Foreground = ColorHelper.IMBALLO_TITLE;
10.
11.
//Aggiorna il 3D
12.
var macchina = (ModelloCommerciale)deselectedItem.Tag;
13.
var macchina3D = macchina.Oggetto3D;
14.
macchina3D.Material =
new
DiffuseMaterial(ColorHelper.IMBALLO_TRASPARENTE);
15.
macchina3D.BackMaterial =
new
DiffuseMaterial(ColorHelper.IMBALLO_TRASPARENTE);
16.
}
17.
}
18.
19.
//Selezione degli oggetti
20.
foreach
(var item
in
e.AddedItems)
21.
{
22.
if
(item
is
RadDiagramShape selectedItem)
23.
{
24.
selectedItem.Background = ColorHelper.IMBALLO_SELEZIONATO;
25.
selectedItem.Foreground = ColorHelper.IMBALLO_TITLE_SELEZIONATO;
26.
27.
//Aggiorna il 3D
28.
var macchina = (ModelloCommerciale)selectedItem.Tag;
29.
var macchina3D = macchina.Oggetto3D;
30.
macchina3D.Material =
new
DiffuseMaterial(ColorHelper.IMBALLO_SELEZIONATO);
31.
macchina3D.BackMaterial =
new
DiffuseMaterial(ColorHelper.IMBALLO_SELEZIONATO);
32.
33.
//Gesione trasparenza, è necessario per poter vedere trasparenti gli altri oggetti 3D
34.
//bisogna portare da index = 0 gli oggetti selezionati
35.
36.
//Rimuovo l'oggetto 3D attuale
37.
this
.oggettiModel3DGroup.Children.Remove(macchina3D);
38.
//Reinserisco l'oggetto 3D con index = 0
39.
this
.oggettiModel3DGroup.Children.Insert(0, macchina3D);
40.
}
41.
}