Here is the best solution. The previous solution has a problem with infinite looping but I was able to figure out how to correct the error!
// Method triggered by TextChanged.
private void Entry_TextChanged(object sender, TextChangedEventArgs e)
{
// If the text field is empty or null then leave.
string regex = e.NewTextValue;
if (String.IsNullOrEmpty(regex))
return;
// If the text field only contains numbers then leave.
if (!Regex.Match(regex, "^[0-9]+$").Success)
{
// This returns to the previous valid state.
var entry = sender as Entry;
entry.Text = (string.IsNullOrEmpty(e.OldTextValue))?
string.Empty: e.OldTextValue;
}
}