Blog chia sẽ kinh nghiệm lập trình và Technical VN. Nơi mà các bạn có thể học tập và tham khảo về những công nghệ mới nhất hiện nay về .NET
Thứ Năm, 25 tháng 12, 2014
Ở phần trước chúng ta đã biết về Validation với Interface IDataErrorInfo, ở phần này tôi sẽ nói về phần còn lại của Validation đó là ValidationRule. Hiểu nôm na đó là cách tạo một tập các điều luật quy định việc nhập liệu của người dùng (có thể là miền giá trị cho phép ở ví dụ dưới)
Tôi tiếp tục lấy ví dụ ở phần trước và chỉ thêm mới lớp PersionalRules. chúng ta đã tìm hiểu về interface IDataErrorInfo, bây giờ chúng ta tìm hiểu về class ValidationRule, lớp này có duy nhất một hàm thành viên
[code language="csharp"]
public override ValidationResult Validate(object value,
System.Globalization.CultureInfo cultureInfo){}
[/code]
Tôi tiếp tục thêm vào class PersionalRules hai thuộc tính đó là Min và Max đại diện cho miền giá trị về tuổi (Min < x < Max), tôi override phương thức Validate và tôi nhận được kết quả
[code language="csharp"]
class PersionalRules : ValidationRule
{
public int Min { set; get; }
public int Max { set; get; }
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
int YearOld = 0;
try
{
if (((string)value).Length > 0)
YearOld = Int32.Parse((String)value);
}
catch (Exception e)
{
return new ValidationResult(false, "Giá trị nhập vào không phải là số" + e.Message);
}
if ((YearOld < Min) || (YearOld > Max))
{
return new ValidationResult(false,
"Độ tuổi vượt quá giới hạn cho phép " + Min + " - " + Max + ".");
}
else
{
//Tất cả đều hợp lệ
return new ValidationResult(true, null);
}
}
}
[/code]
Quay lại phần GUI(giao diện) chúng ta dùng lại ví dụ trước và thêm thế này (chú ý là chỉ thêm một dòng "xmlns:Rules="clr-namespace:Validation" thôi ở thẻ Window)
[code language="xml"]
<Window x:Class="Validation.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Rules="clr-namespace:Validation" <!--Namespace chứa class PersionalRules-->
Title="MainWindow" Height="250" Width="525">
[/code]
Tiếp theo đến thẻ TextBox của tuổi chúng ta thay bằng thẻ TextBox mới như sau(Chú ý thẻ được thêm vào và xóa property Text của thể TextBox cũ)
[code language="xml"]
<TextBox x:Name="txtYear" Height="23" TextWrapping="Wrap" Tag="Year-Old"
<!--Xóa thuộc tính Text=" " ở đây-->
VerticalAlignment="Top" Padding="5,1,2,1" Style="{DynamicResource TxtStyleValidation}"
BorderBrush="#FF0630AE" Margin="0,3,0,0">
<!--Phần thêm vào-->
<TextBox.Text>
<Binding Path="YearOld" UpdateSourceTrigger="PropertyChanged" >
<Binding.ValidationRules>
<!--Giá trị Min,Max là một hằng số, giá trị của chúng không thể dùng Binding-->
<Rules:PersionalRules Min="18" Max="30"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
<!--Phần thêm vào-->
</TextBox>
[/code]
Kết quả như sau (SourceCode)
[caption id="" align="aligncenter" width="525"]
Chúng ta đã hoàn thành hai vấn đề về Validation, chúc các bạn thành công!
Phạm Tuân
Search
Popular Posts
Recent Posts
Blog Archive
-
▼
2014
(18)
-
▼
tháng 12
(18)
- WPF - Các Vấn Đề Về Multi-Thread Trong WPF (Đa Luồng)
- Modern UI For WPF Thiết Kế Giao diện Modern Win8 V...
- WPF - Thiết Kế Giao Diện METRO Win8 Với Thư Viện M...
- WPF - Validation ValidationRule và Vấn Đề Về Thông...
- WPF - Validation ValidationRule và Vấn Đề Về Thông...
- Parallel Class Trong C# và Vấn Đề Xử lý Song Song
- Tìm Hiểu Về Delegate Trong C# và Cách Truyền Dữ Li...
- Extension Methods - Thêm Một Phương Thức Ngoài Vào...
- Indexer trong C# - Kỹ Thuật Duyệt Qua Phần Tử Tron...
- SourceCode - DataBinding và ValueConverter
- WPF - DataBinding và chuyển đổi kiểu dữ liệu IValu...
- SourceCode - DataBinding và UpdateSourceTrigger
- WPF - DataBinding và cở chế tự động update dữ liệu
- SourceCode - DataBinding
- WPF – Cơ Bản về Data Binding
- WPF - Bộ Công Cụ Đắc Lực Cho Thiết Kế Expression S...
- WPF - Các Thành Phần Của WPF
- WPF - Tổng quan về Windows Presentation Foundation
-
▼
tháng 12
(18)
0 nhận xét:
Đăng nhận xét