2010-03-26 170 views
1

我创建了两个属性 - 名称,链接(下)。我使用Required和StringLength属性进行简单属性验证。我将这个类对象绑定到WPF ListBox(带有文本框)。属性验证属性

但是,当我有文本框为空或写的话比8迹象没有发生长:/

我应该怎么做才能火灾的ErrorMessage?或者如何以其他方式实现验证?

我也尝试使用:

  if (value is int) 
      { 
       throw new ArgumentException("Wpisałeś stringa!!"); 
      } 

但它仅在调试模式下火:/

我与执行属性验证类:

public class RssInfo : INotifyPropertyChanged 
{ 
    public RssInfo() { } 
    public RssInfo(string _nazwa, string _link) 
    { 
     nazwa = _nazwa; 
     link = _link; 
    } 

    private string nazwa; 
    [Required(ErrorMessage = "To pole jest obowiązkowe nAZWA")] 
    public string Nazwa 
    { 
     get { return nazwa; } 
     set 
     { 
      if (value != nazwa) 
      { 
       nazwa = value; 
       onPropertyChanged("Nazwa"); 
      } 
      if (value is int) 
      { 
       throw new ArgumentException("Wpisałeś stringa!!"); 
      } 
     } 
    } 
    private string link; 
    [Required(ErrorMessage="To pole jest obowiązkowe link")] 
    [StringLength(8, ErrorMessage = "Link cannot be longer than 8 characters")] 
    public string Link 
    { 
     get { return link; } 
     set 
     { 
      if (value != link) 
      { 
       link = value; 
       onPropertyChanged("Link"); 
      } 
     } 
    } 

    #region INotifyPropertyChanged Members 

    public event PropertyChangedEventHandler PropertyChanged; 

    #endregion 

    private void onPropertyChanged(string propertyName) 
    { 

     if (this.PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 

回答

2

是您的TextBoxTextProperty绑定到你的名字RSSInfo属性? 并且是绑定模式TwoWays?此外,请记住TextBox中的Text绑定仅在TextBox失去键盘焦点时才会更新。如果要更新每个键盘输入上的属性,请在绑定中使用UpdateSourceTrigger="PropertyChanged"属性。

向我们展示你的XAML过,答案可以很简单;-)

另外,我建议你使用自定义ValidationRuleTextBox来增强您的验证。这将使您的用户界面仅显示您的模型(RSSInfo)名称和链接属性的有效数据,因为当用户输入无效时,TextBoxValidationRule禁用Text绑定。这是一个必须使用的ValidationRule这里;-)

的更多信息: http://weblogs.asp.net/monikadyrda/archive/2009/06/24/wpf-textbox-validation.aspx

+0

你帮了我这么多!来自链接的帖子也非常有用:)莫妮卡 - 博客是谁,也来自我的国家,但我从来没有听说过她的博客,谢谢! :) – netmajor 2010-03-27 01:10:14