2011-02-13 47 views
1

我尝试了一个方法,其结果是布尔型自定义验证在模型中!Silverlight Sync

[CustomValidation(typeof(SpecialValidator), "IsUniQueCountryCode")] 

它必须同步,因此方法可以有一个结果值:

public static ValidationResult IsUniQueCountryCode(string value) { 
    if (value.Length > 0) 
    { 
     DSCountry _context = new DSCountry(); 
     ObservableCollection<MCountry> List = new ObservableCollection<MCountry>(); 
     LoadOperation<Country> loadOp = _context.Load((_context.GetCountryByCodeQuery(value)).Where(s => s.ISOCode == value)); 
     IEnumerable<Country> Entities; 
     bool test = false;  
     loadOp.Completed += (s, e) => 
     { 
      test = true; 
     }; 

     // 
     if (test == true) 
     { 
     } 
     // 
    } 

    return ValidationResult.Success; 
} 

我怎样才能使负载同步

回答

2

Silverlight不支持同步服务调用。所以除非你想使用非常丑陋的黑客(见下面的链接),否则你需要在应用程序启动时预先加载这些信息,或者找到一种以异步方式重写它的方法。

http://www.codeproject.com/KB/silverlight/SynchronousSilverlight.aspx

哦,验证程序应该是真的,真快。他们可能在任何时候被调用,通常没有明显的原因,所以在他们内部打一个服务电话是一个坏主意。