728x90
반응형
728x170
▶ ValidationRule 클래스 사용하기
using System.Globalization;
using System.Windows.Controls;
namespace DialogBoxSample
{
/// <summary>
/// 마진 검증 규칙
/// </summary>
public class MarginValidationRule : ValidationRule
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 최소 마진
/// </summary>
private double minimumMargin;
/// <summary>
/// 최대 마진
/// </summary>
private double maximumMargin;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 최소 마진 - MinimumMargin
/// <summary>
/// 최소 마진
/// </summary>
public double MinimumMargin
{
get
{
return this.minimumMargin;
}
set
{
this.minimumMargin = value;
}
}
#endregion
#region 최대 마진 - MaximumMargin
/// <summary>
/// 최대 마진
/// </summary>
public double MaximumMargin
{
get
{
return this.maximumMargin;
}
set
{
this.maximumMargin = value;
}
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 검증하기 - Validate(value, cultureInfo)
/// <summary>
/// 검증하기
/// </summary>
/// <param name="value">값</param>
/// <param name="cultureInfo">문화 정보</param>
/// <returns>검증 결과</returns>
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
double margin;
if(!double.TryParse((string)value, out margin))
{
return new ValidationResult(false, "숫자가 아닙니다.");
}
if((margin < this.minimumMargin) || (margin > this.maximumMargin))
{
string message = string.Format
(
"마진은 {0}과 {1} 사이의 값이어야 합니다.",
this.minimumMargin,
this.maximumMargin)
;
return new ValidationResult(false, message);
}
return new ValidationResult(true, null);
}
#endregion
}
}
▶ XAML 사용하기
...
<TextBox>
<TextBox.Text>
<Binding
Path="Left"
UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:MarginValidationRule
MinimumMargin="0"
MaximumMargin="10" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
...
728x90
반응형
그리드형(광고전용)
'C# > WPF' 카테고리의 다른 글
[C#/WPF] SaveFileDialog 클래스 : 이미지 파일 저장 대화 상자 보여주기 (0) | 2014.01.29 |
---|---|
[C#/WPF] SaveFileDialog 클래스 : 파일 저장 대화 상자 보여주기 (0) | 2014.01.29 |
[C#/WPF] OpenFileDialog 클래스 : 이미지 파일 열기 대화 상자 보여주기 (0) | 2014.01.29 |
[C#/WPF] OpenFileDialog 클래스 : 파일 열기 대화 상자 보여주기 (0) | 2014.01.29 |
[C#/WPF] Window 클래스 : 투명 윈도우 만들기 (0) | 2014.01.28 |
[C#/WPF] ValidationRule 클래스 사용하기 (0) | 2014.01.28 |
[C#/WPF] LogicalTreeHelper 클래스 : 부적절한 IInputElement 객체 찾기 (0) | 2014.01.28 |
[C#/WPF] TextBox 엘리먼트 : 스타일을 사용해 검증 에러 발생시 에러 내용을 Tooltip 속성에 설정하기 (0) | 2014.01.28 |
[C#/WPF] Button 엘리먼트 : IsCancel 속성을 사용해 디폴트 취소 버튼 설정하기 (0) | 2014.01.28 |
[C#/WPF] Button 엘리먼트 : IsDefault 속성을 사용해 디폴트 확인 버튼 설정하기 (0) | 2014.01.28 |
[C#/WPF] MessageBox 클래스 사용하기 (0) | 2014.01.28 |
댓글을 달아 주세요