2011-04-12 10 views
0

여기에 큰 문제가 있습니다. 여기에 있습니다 :사용자 지정 사용자 정의 컨트롤의 종속성 속성

RichTextBox가 포함 된 사용자 지정 컨트롤이 있습니다. 이 리치 텍스트 상자에서 하이퍼 링크와 텍스트 블록을 소개합니다.

사용자 정의 컨트롤에 내 usercontrol에 포함 된 richtextbox에서 직렬화 된 흐름 문서를 반환하는 Designer라는 속성이 있습니다.

public string Designer 
    { 
     get 
     { 
      return XamlWriter.Save(linkRtb.Document); 
     } 
     set 
     { 
      var stringReader = new StringReader(value); 
      var xmlTextReader = new XmlTextReader(stringReader); 
      linkRtb.Document = (FlowDocument)XamlReader.Load(xmlTextReader); 

      OnPropertyChanged("Designer"); 
     } 
    } 

이 속성에 아무것도 바인딩되지 않습니다. 하지만 내가하고 싶은 것은이 속성을 코드 뒤에있는 무언가에 묶는 것이다. 문제는 Designer를 종속성 속성으로 만들면 바인딩이 작동하지 않고 왜 단서가 없는지입니다.

하기는 I이 원하는 것을 결합은 다음과 같습니다

Designer="{Binding Source=CodeBehindClass, Path=CodeBehindVariable, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}" 
+0

바인딩에'CodeBehindClass' 란 무엇입니까? 어쨌든 바인딩 문제를 처리 할 때 가장 먼저 할 일은 디버거에서 앱을 실행하고 Visual Studio의 출력 창에서 바인딩 오류를 확인하는 것입니다. –

+2

Designer를 종속성 속성으로 사용하는 코드를 제공 할 수 있습니까? – Scott

+0

일종의이 문제를 해결했습니다. 내가 읽은 것에서는 의존성 프로퍼티를 얻고 설정하는 로직을 추가 할 수 없다는 것을 이해했다. – astig

답변

0

내가 읽은 바로는 내가 당신이 얻을 수있는 로직을 추가하고 종속성 속성에 대해 설정할 수 없음을 이해했다.

올바른 경우 DP 등록시 메타 데이터에 PropertyChangedCallback을 사용하십시오.

관련 문제