2010-06-15 77 views
3

有沒有人有處理這些驗證規則的多重驗證規則和模板的策略。WPF中的多重驗證規則和驗證模板

例子:

我想有兩個驗證規則(必填&數據)

我想要麼...

一個模板可以被顯示,這取決於規則被激發 改變或 兩個模板,根據哪個規則被觸發顯示

回答

2

好的,所以我想出了一種可行的方法,我希望從任何可能對此感興趣的人那裏獲得反饋。

有效性規則:

我的驗證規則被改變發回有IsRequired &消息屬性

的「ErrorObject」
public class ErrorObject 
    { 
     public bool IsRequired { get; set; } 
     public string Message { get; set; } 
    } 

.... 

return new ValidationResult(false, new ErrorObject() { IsRequired = true, Message = "Is Required" }); 

模板:

在驗證模板現在我可以訪問這些屬性並相應地改變視覺。 (在這個例子中,我表示必填字段的*)

  <Border 
       BorderBrush="Red" 
       CornerRadius="3" 
       BorderThickness="1"> 
       <AdornedElementPlaceholder 
        x:Name="errorAdorner" /> 
      </Border> 
      <TextBlock 
       Text="*" 
       Foreground="Red" 
       Visibility="{Binding ElementName=errorAdorner, Path=AdornedElement.(Validation.Errors).CurrentItem.ErrorContent.IsRequired, Converter={StaticResource BooleanToVisibilityConverter}}" /> 

因此,這是一個簡單的例子,但是你可以想像,這可能會變得非常強大。感謝MS發送回物體!

0

我可能是錯的,而不是100%確定,但我認爲您必須可編程地應用模板,如果你想顯示不同的模板。

這種方法與此相似嗎? Programmatically change validation rule in WPF TextBox

HTH。

+0

我認爲你可能是對的「可編程應用模板」,但這正是我想要避免的。如果我可以用XAML來完成這項工作,那麼在整個應用程序中應用驗證模板會變得更容易一千倍。 此外,您僅鏈接的那個問題中的方法不是指根據不同因素插入多個驗證規則。在我的問題中,我可以期望在所有情況下都有驗證規則,我只是希望能夠以不同的方式對它們採取行動。 謝謝你的嘗試雖然 – 2010-06-15 23:37:21