2011-01-13 3 views
0

값 추가 : MSDN I에 제안WPF - 바인딩 가능한 읽기 전용 종속성 속성을 노출하고 내부적으로 내 코드 그게 전부

1) 나는 그것을은 DependencyPropertyKey를 만든 이후 : 여기이 문제가

public static readonly DependencyPropertyKey ItemsSourceKey = 
      DependencyProperty.RegisterReadOnly("ItemsSource", typeof(List<string>), typeof(MyTextBox), null); 


     public static readonly DependencyProperty ItemsSourceProperty = ItemsSourceKey.DependencyProperty; 
     public List<string> ItemsSource 
     { 
      get { return (List<string>)GetValue(ItemsSourceProperty); } 
     } 

내 XAML의 ItemsSource를 더 이상 볼 수 없습니다.

2. 사용자는 MyTextBox 컨트롤의 ItemsSource에서 현재 문자열을 가져 오는 List에 바인딩 할 수 있어야합니다. 내부적으로 MyTextBox 내부에서 ItemsSource에 문자열을 추가하려고하지만 List 인스턴스를 만들어서 ReadOnly이므로 ItemsSource에 할당 할 수 없습니다.

어떻게 해결할 수 있습니까? 내부적으로 데이터를 설정할 수있는 바인딩 가능한 읽기 전용 속성이 필요합니다. 아마도 .Text 속성을 사용하여 왜 거기에 바인딩하지 않는지 물어볼 수 있습니다. 사용자가 데이터를 입력하면 변경하고 목록에서 변경된 값을 반환하고자합니다 ...

답변

0

어떻게 해결할 수 있습니까? bindable readonly 속성을 사용하여 I 이 내부적으로 데이터를 설정할 수있는 속성을 원합니다. 어쩌면 당신은 왜 .거기에 .Text 속성을 사용하지 않는지 물어보십시오. 당신은 당신이 그것을 위해 변환기를 사용하여 데이터를 수정해야하는 경우 그럼 사용자는 데이터, 내가 그것을 변경하고 목록에서 변경 을 반환 할 ...

들어갑니다.

1

이 문제는 ItemsControl을 바인딩 용으로, Item을 실제 데이터 표시에 사용되는 읽기 전용 컬렉션 개체로 사용하여 ItemsControl에서 해결됩니다. ItemsControl은 이미 이러한 컬렉션을 연결하고 필요한 모든 업데이트를 처리하므로 ItemsControl에서 파생되어야합니다. ItemsControl과 TextBox의 양쪽 모두의 동작이 필요한 경우, 양쪽 모두의 합성이며 내부 프로퍼티에 프로퍼티을 건네 주거나, 서로 관련되는 2 개의 관련 파생 컨트롤 (1 개의 ItemsControl, 1 개의 TextBox)을 작성할 수가 있습니다.

+0

어디서나 ItemsControl을 사용하지 않습니다! – Pascal

+0

John은 ItemsControl이 복사 할 수있는 참조임을 의미했습니다. –

+0

내가 지금 등록 된 내 자신의 ItemsSource Dep Prop. typeof List 이며 더 많은 로직이있는 모든 TextChange에서 업데이트되고 있습니다. – Pascal

관련 문제