質問タイトル私は何をしようとしているかをほとんど説明します。WCFバックエンドを使用してWPFでデータ検証に.NETデータ注釈を正しく使用するにはどうすればよいですか?
例のビットWCFサービス:例のXAMLの
pulic class Restaurant
{
//RegEx to only allow alpha characters with a max length of 40
//Pardon if my regex is slightly off
[RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$")]
public string Name { get; set; }
}
public class RestaurantService
{
List<Restaurant> restaurants = new List<Restaurant>();
public AddRestaurant(string name)
{
Restaurant restaurant = new Restaurant();
restaurant.Name = name;
restaurants.Add(restaurant);
}
}
ビット:例の目的のために私のコードの
簡素化
<TextBox name="txt1" Text="{Binding Restaurant.Name, ValidatesOnDataErrors=True}"/>
は、どのように私は私の見解は何かを作るのですか私のデータ注釈に違反したとき?
私がここや他の場所で見つけることができるすべての例は、正確に私が探しているものでもASP.NETに関係しているものでもありません。私はWPFとデータアノテーションについて十分に分かりません.WCFでは非常に緑です。
私はIDataErrorInfoインターフェイスを実装しようとしましたが、起動できないようです。 StackOverflowの別の質問でこのコードが見つかりました。私はこれをWCFサービスのRestaurantクラスで実装しました。
public string this[string columnName]
{
get
{
if (columnName == "Name")
{
return ValidateProperty(this.Name, columnName);
}
return null;
}
}
protected string ValidateProperty(object value, string propertyName)
{
var info = this.GetType().GetProperty(propertyName);
IEnumerable<string> errorInfos =
(from va in info.GetCustomAttributes(true).OfType<ValidationAttribute>()
where !va.IsValid(value)
select va.FormatErrorMessage(string.Empty)).ToList();
if (errorInfos.Count() > 0)
{
return errorInfos.FirstOrDefault<string>();
}
return null;
}