WPF 시리즈 - 제어가 추가 종속성 속성 시리즈 WPF를 (설정) - 컨트롤 추가 종속성 속성입니다

WPF 시리즈 - 제어 종속성 속성을 추가

종속성 속성의 개념을 만들고 사용하는 방법을 사용합니다. 이 문서는 WPF의 특성의 의존성을 보여주기 위해 간단한 응용 프로그램의 TimePicker의 사용자 지정 컨트롤을 사용했다.

우선도의 TimePicker의 효과.

GIF

 

 

 

 

 

 

 

 

 

개념 및 응용 : 종래 지원 .NET 등 WPF, 애니메이션 스타일 바인딩 속성 데이터와하도록 의존성 재산권, 종래에 대한 속성 .NET 패키지.

새로운 기능 : 임의의 코드 코드 파일은 다음 입력 propdp 탭 키를 두 번 클릭합니다. 다음 코드 블록을 생성.

     MyProperty : 속성 명 의존성; ownerclass 모든 클래스에 대한 결합 전류 종속성 속성 신규 PropertyMetadata 초기화가 0의 디폴트 값을 나타내는 객체의 특성에 의존한다.

코드를 복사
공공 INT의 MyProperty 
{ 
    얻을 {리턴 (INT) GetValue (MyPropertyProperty); } 
    {SetValue는 (MyPropertyProperty, 값)을 설정; } 
} 

// MyProperty에 대한 백업 저장소로 DependencyProperty에 사용. 이 애니메이션은, 스타일링, 결합 등 .. 수 
공공 정적 판독 전용 DependencyProperty에 MyPropertyProperty = 
    (대해서 typeof "MyProperty"의 typeof (INT) (ownerclass) 새로운 PropertyMetadata (0))를 DependencyProperty.Register;
코드를 복사

사용 : 여기에 우리가 바인딩 나중에 사용자 지정 특성을 소개하는 시간을 사용하여 바인딩 사용합니다.

어떻게 TimePicker를 결합하여 사용자 지정 컨트롤을 구축하기 위해 종속성 속성을 사용하는 방법

DependencyPropertyDemo WPF 프로젝트라는 새 프로젝트를 만들고  영상, 사용자 정의 제어 TimePicker를 만듭니다. 다음과 같이 XAML 레이아웃은 다음과 같습니다

코드를 복사
<그리드> 
        <Grid.ColumnDefinitions> 
            <ColumnDefinition 폭 = "9 *"/> 
            <ColumnDefinition 폭 = "24"/> 
            <ColumnDefinition 폭 = "* 10"/> 
        </Grid.ColumnDefinitions> 
        <콤보 NAME = "cbbHour" Grid.Column을이 = "0"/> 
        <라벨 내용 = ""Grid.Column을 = "1"/> 
        <콤보 이름 = "cbbMinute"Grid.Column을 = "2"/> 
    </ 그리드>
코드를 복사

다음과 같이 시간에 의존하는 속성에 대한 새 이름을 BehindCode :

코드를 복사
공공 문자열 시간 
        { 
            얻을 {반환 (문자열) GetValue (TimeProperty); } 
            {SetValue는 (TimeProperty, 값)을 설정; } 
        } 

        공공 정적 읽기 전용 DependencyProperty에 TimeProperty = 
            DependencyProperty.Register ( "시간", 
                대해서 typeof (문자열), 
                대해서 typeof (TimePicker), 
                새로운 PropertyMetadata (DEFAULTVALUE : "0시", 
                    propertyChangedCallback : 널 (null), 
                    있는 CoerceValueCallback :있는 CoerceValueCallback)); 

        개인 정적 오브젝트있는 CoerceValueCallback (DependencyObject에 d를 baseValue 개체) 
        { 
            경우 (baseValue! = NULL) 
            {
                VAR 제어 = TimePicker로서 D; 
                . VAR 시간 = baseValue.ToString () 분할 ( ':'); 
                control.cbbHour.SelectedItem 시간 = [0]; 
                control.cbbMinute.SelectedItem 시간 = [1]; 
                () baseValue.ToString를 리턴; 
            } 
            baseValue를 반환; 
        }
코드를 복사

속성 변경 알림 이벤트 후, 예고의 필요가 없기 때문에 null 값을 전달;있는 CoerceValueCallback을 : propertyChangedCallback는, 도입하지 기본값 : DEFAULTVALUE 다음은 PropertyMetadata 세 개의 매개 변수에 대한 자세한 내용은이 바인딩 새로운 속성 값 값은 때, 여기에 사용 된 이벤트 알림, 컨트롤에 할당 된 값을 얻을 수 있습니다. 여기 시간은 재산의 절반의 완료에 따라 달라집니다.

TimePicker의 특성은 시간의 결합 특성에 따라 달라집니다

다음과 같이 바인딩은 매우 간단하다. 시간 대신 속성에 의존 .NET의 공통 속성 인 경우, 이러한 사용은 바인딩 방법이 아니다.

<로컬 : HorizontalAlignment로 TimePicker = "왼쪽"마진 = "137,38,0,0"VerticalAlignment = "상위"너비 = "161" 
                          시간 = "{상영 바인딩, MODE = 양방향}"/>

부동산 TimePicker 코드가 백그라운드에서 바인딩의 사용 후 다음과 같은 조건이 발생하는 일반 가정을 추가합니다.

영상

 

단어 요약 후

특정 제한이 종속성 속성 사용, 그는 그 DependencyObject에 기본 클래스를 상속해야합니다 이상입니다, ownerclass, 등록 된 클래스 객체이지만, 걱정하지 마세요, WPF 대부분의 요소는 간접 기본 클래스를 통합됩니다.

이 문서에서 구현 TimePicker 컨트롤은 경우에 따라 시간 WPF 선택 제어 문제에 해결할 수 있습니다.

데모 다운로드

당신이이 블로그는 약간의 이익을 읽고 생각한다면, 다음 [추천] 및 [주의] 버튼을 클릭하십시오, 당신의 지원을 주셔서 감사합니다, 나는 북한을 유린했다.눈짓

추천

출처www.cnblogs.com/lsgsanxiao/p/11330506.html