2012-03-18 8 views
2

INotifyPropertyChanged에 약간 문제가 있습니다. 나는 많은 시간을 구현했지만,이 경우는 다르다. 다음 응용 프로그램을 만들고 싶습니다. mockupINotifyPropertyChanged가 예상대로 작동하지 않습니다.

다른 ObservableCollection of Entities에 바인딩되는 여러 탭 컨테이너가 있습니다. 이제는 현재 (마지막) 선택된 엔티티의 이름을 보여주고 싶습니다. 이를 위해 Window 클래스에 DependencyProperty CurrentEntity를 만들고 TabControls에서 SelectionChanged를 통해 현재 엔터티를 할당했습니다.

private void SelectionChanged(Object sender, EventArgs e) 
{ 
    CurrentEntity = e.NewItems[0] as Entity; 
} 

위의 그림에서, 수 비디오는 다음과 같습니다 표시 TextBlock입니다 : 나는 새 탭을 선택할 때마다 이제 TextBlock의 텍스트가 따라 변경

<TextBlock Text={Binding CurrentEntity.Name}" /> 

. 그러나 엔터티의 이름 (Entity에 바인딩 된 Tab의 TextBox 내부)을 변경하면 TextBlock의 텍스트가 변경되지 않습니다. 다른 탭을 선택하고 이름을 변경 한 Tab으로 다시 변경하여 새로 입력 한 이름을 TextBlock에 표시해야합니다. 기본적으로 이것은 내 문제입니다. 나는 다른 탭을 먼저 선택하지 않고 텍스트가 변경되는 것을보고 싶습니다. (예, 새로운 Name을 입력 한 후 Tab의 TextBox에서 포커스를 잃었습니다.)

문제가있는 사람이 누구입니까?

내 "아키텍처"외모 같은 (;-) 더 이하) : uml

+4

주어진 작은 코드는 아무 의미가 없습니다. CurrentEntity를 설정 한 다음 CurrentElement에 바인딩합니다. 무엇 이니? 다이어그램 대신 (또는 더 나은 - 추가로) 코드를 게시하십시오. Elsewise, 그것은 단지 우리를위한 추측 게임 일뿐입니다. –

+0

CurrentElement가 아닌 CurrentEntity입니다. 이것을 지적 해 주셔서 감사합니다. 몇 줄의 코드를 게시하는 것이 더 쉬운 일이라고 생각합니다. 특히 코드가 아닌 전체적인 디자인과 관련이있는 것으로 의심됩니다. 그러나, 나는 3 개의 파일에서 전체 코드를 복사하지 않고 의미가있는 것을 붙이려고 노력할 것이다 ;-) –

+0

'TextBox' 바인딩은 어떻게 생겼는가? 그리고 가장 좋은 추측은'CurrentEntity'가'TabControl'과 다른 항목의 사본에 바인딩되어 있다는 것입니다. 'CurrentEntity == SomeItemCollection [SelectedIndex]' – Rachel

답변

-1

ObservableCollection에는 UI를 업데이트 할 수있는 이벤트가 수집 변경, 당신은 추가, 재를 제거 할 때 쫓겨 것을 의미한다 주문 등.

문자열과 같이 ObservableCollection에서 항목의 속성을 변경해도 실제로 UI 이벤트가 발생하지는 않습니다.

ObservableCollection 내부에있는 개체가 INotifyPropertyChanged를 구현합니까?

+0

위에서 보았 듯이 Entity가 INotifyPropertyChanged를 구현했다는 것을 알 수 있습니다. –

+0

나의 사면의 Danu, 나는 그것을 명확히 놓쳤다. – Rhyous

+0

문제가없는 친구. –

관련 문제