You can approach this with a custom collection and snap buttons to it.
Each individual child will have a property for the row and a property for the column, as well as a true / false value flag that triggers an event when it is changed to true by pressing or pressing a key.
The collection class logic will respond to a value change and loop through other children in the same row and column to notify them that they should be false.
If you do not want to bind data, you can also do this with a set of user controls.
source share