我正在使用MVVM構建WPF 4.0應用程序。該模型使用實體框架4.0生成。 我在WPF上使用數據綁定將用戶輸入綁定到模型屬性。使用MVVM和實體框架4.0驗證WPF用戶輸入
什麼是驗證用戶輸入的最簡單方法? 我更喜歡一種可以在模型上設置驗證規則而不是在WPF上的方法。如何才能做到這一點?任何樣品都表示讚賞。
我正在使用MVVM構建WPF 4.0應用程序。該模型使用實體框架4.0生成。 我在WPF上使用數據綁定將用戶輸入綁定到模型屬性。使用MVVM和實體框架4.0驗證WPF用戶輸入
什麼是驗證用戶輸入的最簡單方法? 我更喜歡一種可以在模型上設置驗證規則而不是在WPF上的方法。如何才能做到這一點?任何樣品都表示讚賞。
BookLibraryWPF Application Framework (WAF)項目的示例應用程序顯示了一個MVVM應用程序。它使用實體框架並在模型(實體)類上定義驗證規則。
我發現的最簡單的方法取自this book,第624-625頁。
視圖模型應該執行IDataErrorInfo
private string _newItem;
public string NewItem
{
get { return _newItem; }
set
{
if (Equals(_newItem, value)) return;
_newItem = value;
SendPropertyChanged("NewItem");
}
}
public string this[string propertyName]
{
get
{
if (propertyName == "NewItem")
{
var valid = NewItem.All(Char.IsLetterOrDigit);
if (!valid)
return "NewItem can only contain letters and numbers.";
}
return null;
}
}
和View長版本:
<TextBox>
<TextBox.Text>
<Binding UpdateSourceTrigger="PropertyChanged" Path="NewItem">
<Binding.ValidationRules>
<DataErrorValidationRule></DataErrorValidationRule>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
還是短版:
<TextBox Text="{Binding NewItem,UpdateSourceTrigger=PropertyChanged,ValidatesOnDataErrors=True}"/>
應該圍繞創建一個漂亮的紅色邊框您的文本框在規則失敗時,您可以播放w的錯誤消息唉,你想要的,例如綁定錯誤消息的文本框工具提示(MSDN):
<Window.Resources>
<Style x:Key="TextBoxInError" TargetType="TextBox">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
然後只需添加這對文本框:
Style="{StaticResource TextBoxInError}"
乾杯!