지난번 글을 쓴지 1년이 넘었습니다. WPF는 너무 크고 쓸 내용이 너무 많습니다. 관련 기술적인 사항을 확장하기 위해 계속해서 사용자 지정 컨트롤에 집중하겠습니다. 누구나 참여하실 수 있습니다. 이 기사에서 가장 중요한 것은 WPF 종속성 속성입니다. 이에 대해 접한 친구는 이에 대해 어느 정도 이해하고 있어야 하지만 WPF 종속성 속성에 대해 이야기하기 전에 속성을 살펴보겠습니다. .net에서는 WPF가 나타나기 전에 사용되었습니다.
일반적인 속성 문제
C# 기본 속성
ASP.NET 사용자 정의 컨트롤 속성
WinForm 사용자 정의 컨트롤 속성
자바스크립트 사용자 정의 컨트롤 속성
C# 기본 속성
네임스페이스 WPFControlTutorialPart2_Basic
{
공개 클래스
{
개인 문자열 _name;
공개 문자열 이름
{
{반환_이름}을 얻습니다.
설정 { _name = 값 }
}
//자동 속성
공개 int 연령 { 설정 }
}
}
위의 내용은 C#의 가장 기본적인 속성으로 간주되어야 하며, 누구나 익숙하게 알고 있는 내용입니다.
참고: 기본 속성은 초기화되지 않습니다. 그렇지 않으면 알 수 없는 오류가 많이 발생할 수 있습니다.
(다음 내용을 선택하여 읽으셔도 됩니다. 다음 기술을 접해보신 분들이라면 사실 매우 간단합니다)
ASP.NET 사용자 정의 컨트롤 속성
네임스페이스 WPFControlTutorialPart2_WebApp
{
공개 클래스 WebFromControl : WebControl
{
개인 문자열 _controlName;
공개 문자열 ControlName
{
얻다
{
_controlName을 반환합니다.
}
세트
{
_controlName = 값;
}
}
보호된 재정의 void RenderContents(HtmlTextWriter 출력)
{
output.Write("컨트롤 이름은 다음과 같습니다:"+ControlName);
}
}
}
위는 간단한 사용자 정의 웹 서버 컨트롤입니다.
asp.net 컨트롤은 렌더링에 중점을 둡니다. 페이지가 새로 고쳐질 때마다 RenderContents 메서드가 호출되므로 속성 변경 여부에 관계없이 다시 렌더링됩니다. UI 다시 그리기를 알리도록 변경되었습니다.
참고: 입력 결과의 유효성을 보장하기 위해 ControlName 속성에 값이 있어야 하는 경우 get 메소드에서 처리할 수 있습니다.
얻다
{
if (_controlName == null) _controlName = string.Empty;
_controlName을 반환합니다.
}
WinForm 사용자 정의 컨트롤 속성
속성이 변경되면 다시 그려지지 않습니다. 다시 그리려면 Invalidate 메서드를 호출하여 OnPaint 메서드를 입력해야 합니다.
참고: 인터페이스를 다시 그리려면 메서드를 수동으로 호출해야 합니다.
JavaScript 사용자 정의 컨트롤 속성
<div id="demoDiv" style="Background-color: Red">안녕하세요</div>
<스크립트>
함수 ElementControl(요소이름) {
this.element = document.getElementById(elementName);
}
ElementControl.prototype.setWidth = function(너비) {
this.element.style.width = 너비;
}
var obj = new ElementControl("demoDiv");
obj.setWidth("안녕하세요");
</script>
JavaScript 변수 유형에는 강력한 유형이 없습니다. 예를 들어 dom의 너비를 설정할 때 유형은 정수만 될 수 있습니다. 값이 문자열로 전달되면 오류가 발생합니다(물론 이는 인위적인 것입니다).
(js 프론트엔드 컨트롤을 해본 사람들이 이렇게 느낄지는 모르겠습니다. 속성을 정의한 다음 컨트롤을 다시 할당하고 다시 그리는 것은 고통스러운 일입니다. 수동으로 조정해야 하며 전체 컨트롤 디자인에 영향을 미치게 됩니다. )
참고: 속성 할당의 유효성을 확인하십시오.
위의 예에서 순수한 속성은 프로그램 요구 사항을 충족할 수 없다는 것을 알 수 있습니다.
위의 요구 사항은 필요하고 자주 발생하며 매우 자주 발생합니다.
표준화된 솔루션
위의 내용은 속성에 대한 일련의 문제를 소개합니다. 문제가 있는 경우 단순화된 해결 방법이 있습니다.
개인적인 요약은 다음과 같습니다.
기술이 상대적으로 복잡하면 기술을 단순화하고 생산 효율성을 향상시키기 위해 일련의 표준을 정의하기 위해 누군가 나올 것입니다.
설계자가 아무리 신중하게 고려하더라도 일단 표준이 정의되면 유연성은 상실됩니다.
표준은 개인 습관과 충돌할 수 있습니다. 표준을 받아들이고 WPF 주제로 돌아가는 방법을 배워야 합니다. 그런 다음 WPF의 솔루션은 종속성 속성(DependencyProperty)입니다.
좋습니다. 이 기사는 단지 소개에 불과합니다. 속성을 사용할 때 이러한 문제가 발생했다면 약간의 느낌이 들 것입니다.
위의 문제가 실제로 속성에 존재한다는 것을 인식했다면 이 기사는 해당 작업을 완료한 것입니다.
이 문서는 확장되지 않습니다. 다음 문서에서는 WPF 종속성 속성 시스템을 다시 소개합니다.
누구나 토론을 환영합니다.