Am I working on right track?
I think you are.
How to automate things, I mean, how will the blocks appear automatically one after another. I know I can have a DispatcherTimer and move block at tick event but drawing and redrawing the complete grid is slow. I want only the portion of the game grid to be redrawn.
Have you measured it? Most of the games redraw the whole scene at a 30 frames per second rate. Make it first work, optimise later on.
If I move my piece left/right/down the complete piece array would move and this would mean a 4x4 piece moving and not just the piece which may be in 1x3 or 2x2.
You need to check the bounds before every move. You can do it for each square, you only have 16 comparisons. It is not very difficult and it won't be slow.
How to know if the piece is new or an old settled piece. I know I can take a boolean value but I think a boolean array of 10x20 would be large.
It is not large.