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
-
Phong cách thiết kế Material Design nhắm đến những đường nét đơn giản, sử dụng nhiều mảng màu đậm nổi bật, các đối tượng đồ họa trong giao ...
-
Hôm nay tôi sẽ giới thiệu với các bạn một Framework đến từ Microsoft - framework này không quá lớn nhưng là khá mạnh khi các bạn làm việc vớ...
-
WPF vượt trội hơn Winform về khoản Drawing , trong đó đặc biệt WPF hỗ trợ đồ họa rất tốt vì nó tương tác trực tiếp đến GPU. Hôm nay chúng t...
-
Hôm nay chúng ta sẽ tìm hiểu cách tạo ra các menu chuột phải trên ứng dụng WPF của mình. Ở bài này chúng ta xoay quanh việc tìm hiểu cách tạ...
-
Để dễ hiểu, các bạn hãy hình dung rằng: cùng một tập tin thực thi *.EXE nhưng bạn DoubleClick 10 lần cách quãng vào nó thì chuyện gì sẽ sảy ...
-
Trong bài viết trước tôi có giới thiệu về Extension Methods trong nguôn ngữ lập trình C#; hôm nay tôi sẽ nói về một vấn đề có ý nghĩa tương...
-
Hôm nay chúng ta sẽ thử đo xem thời gian query Data của "Foreach vs LinQ vs LinQasParallel" như thế nào. Tôi tạo một tool nhỏ để l...
-
Data Binding là kĩ thuật dùng để tạo gắn kết giữa phần giao diện ( UI ) và dữ liệu thông qua phần business logic hoặc giữa các đối tượng UI...
-
LOG4NET là một thư viện mã nguồn mở cho phép chúng ta tạo ra một hoặc nhiều tập tin log, kiểu log cũng như nội dung log một cách linh hoạt v...
-
Sau hai bài giới thiệu về Caliburn.Micro framework, hôm nay chúng ta sẽ cùng bắt tay vào làm một dự án nhỏ - HelloWorld. Step 1: Add referen...
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