By default every XAML file has line near the beginning: mc:Ignorable="d". Things proceeded d: are used by the rendering engine or compiler darning design time. During the compile to an executable they are ignored. When you right click a properties of a control and select Create Data Binding you get a dialog. When you do datacontext in C# there is no reference to whatever is in datacontext. When you do it the way that you did you will see the properties of what is in datacontext in the dialog. Hence, the dilemma.
The problem of doing what you did is that it instantiates StudentViewModel. Every page you do this on will look at a different instance. What I did was create a single instance. I pointed all datacontext binding to look at the same instance.
Note, I have not tried using d: for datacontext. I have used d: for other things. Every thing I have read says it should work for datacontext also.