WPF Q&A

사용자 정의 콘트롤의 DependencyProperty 작동이 잘 안됩니다.. 비가와요 평점: 없음 조회: 80
첨부파일

 
사용자 정의 콘트롤에 DependencyProperty 를 만들고
다른 창에서 사용하려 하는데, Binding 이 잘 안됩니다.
 
간단한 예제 만들어서 첨부했습니다.
보시면
private void Button1_Click(object sender, RoutedEventArgs e)
        {
            _MyItem.NumberList = Colorbox.NumberList.One;
            //MyColorbox.SetNumber = Colorbox.NumberList.One;
        }
 
에서 _MyItem.NumberList = Colorbox.NumberList.One; 은 작동하지 않고,
MyColorbox.SetNumber = Colorbox.NumberList.One; 이것만 작동 합니다.
 
뭔가 잘못된 부분이 있는것 같은데... 뭔지 모르겠습니다. ^^;
감사합니다.
태그 : DependencyProperty
작성자 정보
비가와요
Level 25
 [EXP.1/50]

메일:  비공개
글등록 +12 492 덧글등록 +3 81
자기소개
WPF 초보입니다~
글 공유하기 |
  tweet facebook
2018-06-12 오전 9:54:36
나도한마디
사용자
천원            [2018-06-12]
Level 2
 [EXP.8/16]
DependencyProperty 의 바인딩된 값이 변경 되었을 때는 PropertyChangedCallback 을 이용해서 변경된 내용을 적용 해줘야 합니다.
구현하신대로 set 에다가 코드 넣어도 바인딩 값이 변경되었을때 set 부분은 타지 않아요. 제 설명이 좀 부족하긴 한데..;
DependencyProperty에 대해 다시 내용 확인 해 보시면 좋을 듯 해요
사용자
비가와요            [2018-06-14]
Level 25
 [EXP.1/50]
감사합니다.
말씀하신 ProertyChangeCallback 적용하니 되네요~
덕분에 잘 해결 했습니다. ^^
사용자
darkmong            [2018-06-15]
Level 3
 [EXP.7/16]
첨언 드리면, ui의 변경을 위와 같이 직접적으로 코드에 넣는 것 보다는 binding과 trigger, typeconverter 등을 응용하는 것을 추천드립니다.

위의 User Control의 경우,
SetNumber를 Border의 background & TextBlock의 Text에 Binding을 하고, 해당 type으로 변경하는 TypeConverter를 각각 만들거나, Boder에 Datatrigger를 지정하는 등 여러 방안이 있을 수 있습니다.

이렇게 하는 것이 x:Name을 지정하여 control을 직접적으로 오픈하지 않을 수 있고,
추후 색상이나 출력되는 text의 format 등이 변경되었을때,
typeconverter를 변경하거나, xaml에서 resource를 바꾸는 것으로 처리가 가능하여 비지니스 로직과 뷰를 조금더 예쁘게(?) 분리할 수 있습니다^^

코드에 왕도는 없지만 오지랖 차원에서 설명드려요~~~
글리스트
c# viewModel에서 윈도우 참조질문입니다.[7]+1  이기현
 ★현재글->   사용자 정의 콘트롤의 DependencyProperty 작동이 잘 안됩니다..[2]+1 파일첨부 비가와요
코드 복사했는데 디자인이 다르네요? ( 파일, 이미지 있음 )[1]+1 파일첨부 insurang
TextBox 의 ToolTip 을 Binding 하는경우 Null 처리는 어떻게 하나요?[1]+2  비가와요
canvas에 타원을 그리는 가장 빠른방법이 궁급합니다.[2]+2  Mines
버튼 템플릿으로 들어간 객체이름을 어떻게 특정하면 되나요?[1]+1  insurang
WPF Grid 또는 DockPanel 사이즈 변경시 TextBlock Wrap하기[3]+2  한님맨
canvas에 10개의 사각형을 add 했는데 2번째 사각형을 제일 위로 보이게 하고 싶습니다.[1]+1 
멀티 터치 가능한 수가 몇개인지 어떻게 알 수 있나요?  insurang
WPF에서는 바탕화면 캡처가 어렵네요.[2]  insurang
canvas 에 add한 객체를 지우는 방법을 문의드립니다.[1]  파랑삶
자 눈금선 숫자표기 궁금합니다.[2]+2  방랑이z