2009-05-06 5 views
5

Silverlight에서 "클릭하여 편집"컨트롤을 만들 수있는 방법이 있습니까? 이 treeview 컨트롤에 표시되는 항목이 있고 treeview에서 직접 레이블을 편집 할 수 있기를 바랍니다.Silverlight에서 클릭하면 편집

누구든지이 작업을 수행하는 방법을 알고 있습니까?

+1

링크 http://stackoverflow.com/questions/2088909/inline-editing-textblock-in-a-listbox-with-data-template-wpf/7687402#7687402는 click-to-edit usercontrol을 제공합니다. 희망이 도움이됩니다. – Youngjae

답변

9

실제로 매우 쉽습니다. 나는 이러한 스와핑 메커니즘으로 많은 형태를 구현했다.

변환기를 사용하여이 작업을 수행하고 TreeView에 바인딩하는 엔티티에있는 IsEditable 속성에서 간단한 BooleanToVisibility 변환을 수행 할 수 있습니다. TreeView 내의 ItemTemplate은 IsEditable 속성이 true 일 때마다 축소되어 IsEditable 속성이 false 일 때 Collapes되는 방식으로 TextBox를 바인딩하는 방식으로 TextBlock을 바인딩합니다 (그 반대의 경우도 마찬가지입니다).

당신이 다음을 수행해야합니다 사용자 정의 ClickToEdit 제어를 구축하고 싶었다면 : EditableTemplate라는 하나 :

  1. 이 형의 DataTemplate의 새로운 종속성 속성을 노출 ContentControl을
  2. 에서 상속하는 클래스를 만듭니다.
  3. OnApplyTemplate 내에 MouseLeftButtonUp 이벤트 처리기를 추가하여 클릭 신호를 수신합니다.
  4. 클릭 이벤트에서 활성 콘텐츠 템플릿을 EditableTemplate으로 변경합니다.
  5. 컨트롤에서 포커스를 잃을 때 템플릿을 다시 변경하십시오. 내부 당신이

사용자 지정 컨트롤을 구현 할 수 것

  • 사용자 정의 ClickToEdit 제어를 넣어

      이 트 리뷰에 대한 귀하의 ItemTemplate을 무시
    1. :

    이제 트 리뷰 내에서 사용자 지정 컨트롤을 사용하는 방법 (또는 다른 개발자)가 컨텐츠 편집기로 사용할 컨트롤을 쉽게 지정할 수 있습니다. 예를 들어 TextBox를 사용하는 대신 NumericUpDown 또는 DateTimePicker를 지정할 수 있습니다.

    Silverlight 3의 DataForm을 확인하십시오. 비슷한 기능을 가지고 있지만 편집 가능 대 읽기 전용 전환은 클릭으로 수행되지 않습니다.

  • +0

    버튼 클릭시 ContentTemplate을 전환 할 때 EditableTemplate의 컨트롤 (TextBox)에 포커스를 설정하는 방법을 알려주시겠습니까? – Jehof

    +0

    나는 N 5 단계로 붙어있다. 여기 내 코드가있다. http://stackoverflow.com/questions/28613473/click-to-edit-control-lostfocus-event-issue –

    관련 문제