Last time I tried to put you down to the problem: you have a container and some children. We wanted to handle the selection of items.
Until now we had to decide who will be the one that is in charge of setting the IsSelected property of each child. At first glance, we can see that the child itself is the Information Expert in which we can delegate the responsibility. After all, the children carry the IsSelected property!
Well, I think it’s true, but that makes the design unnecessarily complex.
Imagine a Single selection mode! Just like ListBoxes have. Just one item can be selected.
I gave you a hint in the last post. It works as you should expect: Each click in a child selects it, but it also makes the previous children to be unselected.
“Wow, boy, it sounds pretty simple!”
I prepared you for the answer: it’s not the child that controls its IsSelected property… it’s the PARENT! In my opinion, it’s the only that can observe the changes and control the flow of events. If a child is clicked, the parent must know. Why? Because the it can decide if the change is allowed of not.
What way, you can even have some selection modes. For example, you can have a selection mode that toggles selection when a child when it’s clicked, or one in which you always add items.
In other words, it gives you a lot of variants to choose.
This is what I finally chose in my personal designer and I think it’s the right decision. What do you think? would you have solved the situation like me? C’MON tell me.