INotifyPropertyChanged에 약간 문제가 있습니다. 나는 많은 시간을 구현했지만,이 경우는 다르다. 다음 응용 프로그램을 만들고 싶습니다. INotifyPropertyChanged가 예상대로 작동하지 않습니다.
다른 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에서 포커스를 잃었습니다.)
문제가있는 사람이 누구입니까?
내 "아키텍처"외모 같은 (;-) 더 이하) :
주어진 작은 코드는 아무 의미가 없습니다. CurrentEntity를 설정 한 다음 CurrentElement에 바인딩합니다. 무엇 이니? 다이어그램 대신 (또는 더 나은 - 추가로) 코드를 게시하십시오. Elsewise, 그것은 단지 우리를위한 추측 게임 일뿐입니다. –
CurrentElement가 아닌 CurrentEntity입니다. 이것을 지적 해 주셔서 감사합니다. 몇 줄의 코드를 게시하는 것이 더 쉬운 일이라고 생각합니다. 특히 코드가 아닌 전체적인 디자인과 관련이있는 것으로 의심됩니다. 그러나, 나는 3 개의 파일에서 전체 코드를 복사하지 않고 의미가있는 것을 붙이려고 노력할 것이다 ;-) –
'TextBox' 바인딩은 어떻게 생겼는가? 그리고 가장 좋은 추측은'CurrentEntity'가'TabControl'과 다른 항목의 사본에 바인딩되어 있다는 것입니다. 'CurrentEntity == SomeItemCollection [SelectedIndex]' – Rachel