2017-11-28 6 views
1

저는 WPF 프로그래밍에 익숙하지 않습니다.WPF와 Datacontext 바인딩

바인딩이 필드 대신 속성을 사용하는 경우에만 작동하는 이유는 무엇입니까?

XAML :

<ListBox ItemsSource="{Binding requiredPermissions}" DisplayMemberPath="MyText" Grid.Row="1" ></ListBox> 

뒤에 코드 (작품) : 뒤에

public ObservableCollection<MyNotifyableText> requiredPermissions { get; set; } 

코드 (작동하지 않습니다) :

여기

나에게이 질문을 준 예입니다
public ObservableCollection<MyNotifyableText> requiredPermissions; 

Th 사전에 anks.

답변

6

필드 대신 속성을 사용할 때 바인딩이 작동하는 이유는 무엇입니까?

뒤에서 마이크로 소프트 사용 반사 런타임에 바인딩 경로를 해결하기 위해, 그들 만 Type.GetProperty 방법을 사용하여 공공 건물 인 DataContext를 검색하기 때문에.

그래서 공개 속성에만 바인딩 할 수 있으며 필드는 바인딩 할 수 없습니다.

+0

감사합니다. :) –

+0

내 잘못 했어. :) –

0

속성에 올바르게 바인딩되지 않은 것으로 보입니다. Binding은 귀하의 재산이 어디에 정의되어 있는지 알기에 충분히 똑똑하지 않습니다. ,

<Window x:Name="MyWindow" DataContext="{Binding ElementName=MyWindow}" ... /> 

다음 :

는 데이터 컨텍스트로보기에 이름을 넣어 자신을 설정 : 당신은

이 시도 ... = DataContext를 먼저보기의 DataContext를 설정해야 ListBox 바인딩이 작동해야합니다.

+0

그래, 나는 이미 생성자에서 그랬어. 고마워. :) –

+0

당신을 환영합니다! 그건 그렇고, 속성 이름은 파스칼 케이스에 있어야합니다. – SuperJMN

+1

많은 분들께 감사 드리며 항상이 대회에 대해 확인하고 싶었습니다. –