2012-03-08 31 views
6

Uygulama pencereleri telefon 7 geliştirmem gerekiyor. Ve açık nedenlerle formlarımı doğrulamak zorundayım.Form doğrulama

Genellikle WPF'de programlıyorum ve ValidationRule ilkesini kullanıyorum. Ancak aynı prensibi Windows 7 telefonunda da bulamıyorum.

Bu yüzden sorum, form doğrulaması nasıl oluşturulur.

+0

Doğrulama uygulamamın reklamını yapacağım: http://vortexwolf.wordpress.com/2012/03/10/windows-phone-7-validation. İnternetteki diğer uygulamalardan daha kullanımı daha kolay olduğunu düşünüyorum. – vorrtex

cevap

4

Windows Phone, form onaylarını kutudan çıkarmaz.

Doğrulama kurallarını uygulamak için özel denetimin nasıl atanacağını açıklayan bir blog post.

Bunu kendi uygulamalarımdan birinde ele alacağım yöntem, model sınıfımda doğrulama mantığını koymak ve modelde bir IsValid özelliği oluşturmak olacaktır. Model sınıfında ayrıca, doğrulama sorununu açıklayan bir hata iletisine sahip bir Error özelliği de bulunur. UI katmanım myModel.IsValid'u arayacak ve bir sorun olduğunda hata mesajını görüntüleyecektir.

+0

thx, Microsoft tarafından halihazırda uygulanan bir yöntem olmasını umuyordum – David

0

Masaüstünde Silverlight'la kullandığım aynı yaklaşımı kopyaladım: INotifyDataErrorInfo arabirimi.

Here Daha özel olarak tarif ettim ve örnek projenin kaynak kodunu karşıdan yükleyebilmeniz için here.

simpliest örnek yüzden görünür:

View.xaml

<TextBox Text="{Binding SomeProperty, Mode=TwoWay, ValidatesOnNotifyDataErrors=True, NotifyOnValidationError=True}" 
     Style="{StaticResource ValidationTextBoxStyle}" /> 

View.xaml.cs

public MainPage() 
{ 
    InitializeComponent(); 
    this.BindingValidationError += MainPage_BindingValidationError; 
} 

private void MainPage_BindingValidationError(object sender, ValidationErrorEventArgs e) 
{ 
    var state = e.Action == ValidationErrorEventAction.Added ? "Invalid" : "Valid"; 

    VisualStateManager.GoToState((Control)e.OriginalSource, state, false); 
} 

ViewModel.cs

public class MainViewModel : ValidationViewModel 
{ 
    public MainViewModel() 
    { 
     this.Validator.AddValidationFor(() => this.SomeProperty).NotEmpty().Show("Enter a value"); 
    } 

    private string someProperty; 

    public string SomeProperty 
    { 
     get { return someProperty; } 
     set 
     { 
      someProperty = value; 
      RaisePropertyChanged("SomeProperty"); 
     } 
    } 
} 

Çok sayıda ek derse dayanır, ancak aynı zamanda kendiniz yazacağınız küçük bir kod vardır.

İlgili konular