2012-06-01 2 views
0

나는이 프로그램 언어를 배우기 위해 wpf와 mvvm 패턴을 사용하여 C#에서 프로그램을 만들기 시작했습니다. 마침내 Google을 사용하여 해결할 수없는 문제가 있음을 유감스럽게 생각합니다. 하지만 나는 정확한 것을 시도합니다.완전 독립적 인 Uielement에 대한 DataContext로 SelectedItem 가져 오기

처음에 나는 present GUI를 사용하므로 더 쉽게 문제를 설명 할 수 있습니다.

MainWindow의 xaml 파일은 here입니다.

본 내용은 심각하고 중요한 프로그램이 아니며, 몇 가지 기술을 배우기 위해 만들었습니다. 나는 바닥 글에 두 번째의 ListView의 selectedItem가 속성 (소모품)가 필요 :

지금 내 주요 질문 온다. 나는 이것이 상대 경로와 listview의 이름을 사용하여 선택한 항목에 바인딩 할 수 있기 때문에 이것이 심각한 문제는 아니라고 생각했습니다. 이 작업을 수행하지 못했고이 목록 뷰에 항목을 추가하자마자 null 참조 오류가 발생했습니다. 나는 코드를 두 번 확인했는데 나는 그곳에서 잘못된 것을 만들지 않았을 것이라고 확신한다. 그래서 문제는 그것이 일종의 자손이라고 생각했습니다.

내 다음 시도는 선택한 항목에 바인딩 된 기본보기 모델에서 새 속성을 만드는 것이 었습니다. 당신은 이것을 136 행에서 찾을 수 있습니다. 그러나 제가 발견 한 것처럼, 이것 역시 제가 아이템을 클릭하면 System.NullReferenceException을 발생시킵니다. 나는이 재산이 읽기 전용이기 때문에 그것이라고 생각한다. 나는 무엇을해야할지 모른다. 바닥 글의 DataContext로 SelectedItem을 바인딩 할 수있는 다른 방법이 없습니다?

내 두 번째 질문은 라인 27에 관한 것입니다. TabControl은 항상 첫 번째 탭을 자동으로 선택해야합니다. 그러나 그것은 단지 두 번째로 그것을 만듭니다. 꽤 재밌 네요. 나는 챔피언 콤보 상자를 아래로 스크롤하면 첫 번째 탭은 간다 : 선택 - - - 선택되지 않은 선택 ...

내 세 번째와 마지막 질문에 대해 72 50 라인과 유사하다입니다 (DataContext를 너무 동일)하지만 컨텍스트 메뉴 (1.72)는 Icommand를 호출하지 않지만 라인 50을 보게되는 itemtemplate의 ContextMenu의 ICommand가 작동합니다. 기묘한.

재미있는 프로젝트이므로 내 정보가 충분하지 않으면 소스 코드를 제공 할 수 있습니다. - 죄송합니다. 두 개의 하이퍼 링크 만 허용됩니다.

도와주세요. 나는이 의심스럽지 않은 행동으로 조금 혼란스러워한다. 나는 저를 도울 수있는 것을 찾지 못했고이 질문의 대답이 단순 할 경우 미안합니다 : P

강조하기 위해 : 중요한 질문은 제가 정말로 필요한 답입니다. 두 번째는 프로그래밍 방식으로 해결할 수 있습니다. 세 번째 문제를 해결하려면이 기능을 제거하면됩니다.

나는 모든 힌트에 만족합니다!

+0

각 질문에 대한 샘플 코드로 질문을 여러 부분 (여러 질문)으로 나눕니다. 한 번에 읽으려는 것이 큰 질문이며 읽기가 어렵습니다. 사람들은 질문 중 하나에 대해서만 대답 할 수도 있으므로 대답하기가 더 쉽습니다. –

답변

0

전체 질문을 해결하지 못했지만 선택한 항목을보기 모델 속성 (양방향 바인딩)에 바인딩 한 다음 다른보기 UIElement를이보기 모델 속성 (단방향 바인딩 또는 stackoverflow 예외가 발생하지 않음)

+0

xaml 파일의 136 행을 읽었 으면 이미 이것을 수행했을 것입니다. Item을 추가하자마자 System.NullReferenceException을 제공합니다. TwoWay Binding과 OneWayToSource가 테스트되었습니다. 어쨌든 고마워. – user1431279

+0

거기에 값 변환기를 넣고 null 참조의 원인을 확인하십시오. –

+0

죄송합니다. 원하는 경우 비디오를 만들 수 있습니다 .- 내가 디버그하면, 제대로 선택한 항목을 설정 한 다음 "propertychanged"이벤트가 발생하고 선택한 항목이 세 번 호출됩니다. . 다시 클릭하지 않으면 선택한 항목이 다시 저장되고 ~ 8 번 호출됩니다. 이제 동일한 양의 null 참조 오류가 발생합니다. 나는 어떤 디버깅 스킵도 건너 뛰지 않았다. 그래서 그것은 gui에서 오는 호출이다. (selectedItem은 C# 코드에서 전혀 사용되지 않습니다) -> OneWayToSource를 사용하면 같은 오류가 발생합니다! – user1431279