WPF 및 MVVM을 사용하고 있습니다. 내 응용 프로그램에서는 기본 화면에서 항목을 선택한 다음 버튼을 눌러 세부 정보를 볼 수 있습니다. 새 창을 열어야하며 IsSelected가 ObservebleCollection의 항목에 바인딩 된 목록 뷰에서 여러 항목을 선택할 수 있습니다.WPF/MVVM에서 동일한 인스턴스에 바인딩 된 두 개의 listviews를 서로 다른 선택으로 유지하는 방법
사용자가이 버튼을 다시 누르면 (동일한 기본 화면에서) 동일한 세부 정보로 다른 창이 열립니다. 그러나 다른 선택을하면 첫 번째 창이 동기화되어 동일한 선택 항목이 표시된다고 가정합니다.
서로 다른 선택으로 두 개의 창을 만들 수 있습니다. 이것이 가능하며 작동하게하려면 어떻게해야합니까?
업데이트 : 예 : 4 륜 자동차 (컬렉션)가 있다고 가정 해 보겠습니다. 두 창에있는 listviews는 4 개의 바퀴를 보여줍니다 (하나의 항목은 하나의 바퀴 임). 목록보기에서 휠 1과 2를 선택하면 다른 창에서도 휠 1과 2가 선택됩니다. 하지만 창 2에서 3과 4를 선택하고 창 1에서 휠 1과 2를 선택하려고합니다. 그리고 나는 4 륜차의 또 다른 컬렉션을 추가하고 싶지 않습니다. 그렇지 않으면 나는 8 륜구동 차 ... 또는 4 륜 2 륜차를 가지고있을 것입니다. 그러나 3 륜과 4 륜을 바꿀 경우 두 번째 차만 바꿀 것입니다.
업데이트 2 : , BTW 내 응용 프로그램에서 :
- 나는 목록보기 n 개의 창에 0이있다.
- 뷰 모델을 포함하는 창을 만듭니다.
- 각보기 모델은 '실제'모델을 참조합니다.
선택한 항목에 대한 바인딩 변수는 실제 모델 내부에 있으므로이 값을보기 모델로 이동해야하지만 어떻게해야할지 모르겠다. 왜냐하면 (예제에서 바퀴의) 속성은 '실제'모델에 있고 그것들은 같은 목록보기 (항목)에서도 바인딩되기 때문입니다. Ic
두 개의 목록은 하나의 예일뿐입니다. 실제로 동일한 기본 모델 (예 : 자동차)을 사용하여 목록 뷰가있는 0 개, 1 개 이상의 창을 가질 수 있습니다. 나는 두 개의 뷰 모델이 필요하다는 것을 알고 있지만 뷰 모델은 동일한 모델 (자동차)을 참조해야합니다 ... 또는 예를 들어 선택한 항목을 제외한 휠이 변경되었을 때 모든 모델을 동기화해야합니까? –
그래서 선택 상태를 제외하고 목록의 휠을 동기화 상태로 유지 하시겠습니까? IsSelected 속성과 휠 자체에 대한 참조가있는 래퍼 뷰 모델을 만들 수 있습니다. 새 목록을 표시 할 때마다 이러한 래퍼의 새 모음을 작성할 수 있습니다. 당신의 구속력에서 당신은 래퍼라고 말할 수 있습니다. 선택자와 래퍼. 힘 .SomeProperty. –
소리가 들리 겠지만 모델 (보기)이 훨씬 복잡해집니다. (괜찮 으면, 나는 그것이 작동하는지 점검 할 때까지 대답을 수락하는 것을 기다린다). –