If you are using WCF RIA Services to fill the DataGrid you can implement
DataAnnotations in your DomainService metadata file. Eg.
Using Data Annotations to Customize Data Classes.
For your case you can Use
RegularExpression Attribute to allow only numeric values for a Column. In this case you can controls data via WCF asynchronously, obviously on client side.
The following alternative don't like me, but...
If you don't use WCF RIA Services you can call a TextInput Event for DataGrid:
<usercontrol x:class="DataGridExample.MainPage" xmlns:x="#unknown">
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<grid x:name="LayoutRoot" background="White">
<controls:datagrid x:name="gridData" textinput="gridData_TextInput" xmlns:controls="#unknown" />
</grid>
</usercontrol>
And the code behind is:
private void gridData_TextInput(object sender, TextCompositionEventArgs e)
{
string value = e.Text;
decimal test = -1;
decimal.TryParse(value, out test);
if (test == -1)
e.Handled = true;
}
Hope it helps. :D