Binding to Indexers
A while ago I played around with DataBinding an tried to implement a Sudoku Game similar to Sudoku in the WPF tutorial https://blogs.msdn.com/coding4fun/archive/2006/11/06/999502.aspx
One thing that is not in that game is, that some People (including me :-) ) like to enter all possible numbers in each cells of the grid and narrow it down stp by step till only one number is left in the cell.
I implemented a kind of a bit-set that can contains digits from 1 to 9. And wanted to bind it to each of the 9x9 cells of the Sudoku game in a small grid where the digits are shown or hidden accordingly.
I exposed the individual digits through an indexer that returns a Boolean value.
I bind this bitset to a TextBlock that is either shown or hidden according to the Boolean value of the indexer
This goes on for all nine elements. I had to use a converter since the Visibility is not boolean but an enumeration.
It worked great, only the digits are shown that are in the bitset.
But: updates to the bitset where not reflected in the UI. I knew it had something to do with INotifyPropertyChange or INotifyCollectionChanged but couldn't find anything.
Beatriz Costa https://www.beacosta.com/blog/ helped me and showed me that the Binding class is looking for "Item[]" in the argument of the PorpertyChanged Event
So with the following code did it :
Thanks Beatriz.
Comments
- Anonymous
September 28, 2007
That is cool! :) I love seeing the great apps people come up with, when using data binding! Keep blogging! Bea