INTRODUÇÃO
Boa noite galera!
Veremos neste post, como se trabalhar com validações de campos no Silverlight 4. Há várias maneiras de se validar um campo no Silverlight, seja por DataAnnotations , ou através da interface IDataErrorInfo, que nos fornece métodos para validar dados de forma personalizada.
PREVIEW
Abaixo, temos o exemplo que será demonstrado. Os campos validados serão, campo “Nome” e “Idade”, sendo que a regra aplicada, teremos:
Nome ::   Será um campo obrigatório.
Idade ::   Aceitará somente valores maiores que zero.

Observe na imagem abaixo, o momento de validação de um dos campos, e o feedback ao usuário pelo erro encontrado.

CÓDIGO C#
Abaixo, temos o código em C# que irá constituir a classe Cliente, sendo que ela terá duas propriedades, “Nome” e “Idade”. A classe Cliente implementa a interface IDataErrorInfo, que nos fornece métodos para validação de dados.
Abaixo temos um método que valida as propriedades da Classe, nele passamos como parâmetro qual a propriedade que desejamos validar, e posteriormente criamos nossas regras de negócio referente a mesma, retornando uma “string” do erro personalizado que adotarmos.
public class Cliente : IDataErrorInfo
{
//Propriedades da Classe
public string Nome { get; set; }
public int Idade { get; set; }
//Método implementado através da
//interface IDataErrorInfo
//Retorna uma mensagem de erro indicando o que
//está errado com esse objeto.
public string Error
{
get { return null; }
}
//Método implementado através da
//interface IDataErrorInfo
//Através dele, passamos o nome da propriedade
//que desejamos validar
public string this[string columnName]
{
get
{
switch (columnName)
{
//Validando a Propriedade Nome
//e retornando a mensagem de erro
case "Nome":
if ((Nome.Length == 0) || Nome.Trim() == "")
return "O campo Nome é obrigatório.";
else
goto default;
//Validando a Propriedade Idade
//e retornando a mensagem de erro
case "Idade":
if (Idade < 0)
return "O campo Idade deve ser maior que 0.";
else
goto default;
//Por padrão, retorna null
default:
return null;
}
}
}
}
CÓDIGO XAML
No código XAML abaixo, temos os dois elementos TextBox que serão validados, observe que o primeiro elemento, o “textBoxNome”, está com a propriedade “Text” vinculada através de Binding, com a Propriedade “Nome”, da classe Cliente; E a propriedade “Text” do elemento “textBoxIdade”, vinculado através de Binding, com a Propriedade “Idade”.
Ambos os elementos estão com as meta-propriedades do Binding, “ValidatesOnDataErrors” e “ValidatesOnExceptions”, setados para “True”, pois é através dessa ativação, que os controles estarão aptos a utilizar os recursos de validação do Silverlight.
<!-- Elemento TextBox, vinculado
por Binding, a propriedade Nome -->
<TextBox x:Name="textBoxNome"
Margin="80,40,16,0"
Height="25"
VerticalAlignment="Top"
Text="{Binding Nome,
Mode=TwoWay,
ValidatesOnDataErrors=True,
ValidatesOnExceptions=True}"
d:LayoutOverrides="GridBox" />
<!-- Elemento TextBox, vinculado
por Binding, a propriedade Idade -->
<TextBox x:Name="textBoxIdade"
Margin="80,90,190,34"
Height="25"
Text="{Binding Idade,
Mode=TwoWay,
ValidatesOnDataErrors=True,
ValidatesOnExceptions=True}"
d:LayoutOverrides="GridBox" />
CÓDIGO C#
No código C# abaixo, vamos carregar o DataContext da nossa MainPage, através de alguns dados de exemplo, utilizando a classe “Cliente” implementada, para que os elementos TextBox possam ter suas propriedades “Text”, carregadas e possam utilizar os recursos de validação personalizada que implementamos.
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
//Adiciono objeto ao DataContext, para
//carregar elementos que estão na View,
//por Binding
DataContext = new Cliente() { Nome="Robson Fernandes",
Idade = 21
};
}
}
APLICAÇÃO – RUN
Abaixo temos a aplicação final executando.
DOWNLOAD
Fontes Silverlight Completo-> DataValidationApp
Abraços pessoal!
Robson Fernandes











