글쎄, 지금 당장 내 머리를 긁적 거리고 있습니다. 하지만 내 문제에 대한 해결책을 찾지 못했습니다. 내가 가진 것은 MainViewModel과 ObservableCollection TabItems입니다. MainViewModel은 TabControl을 호스트하는 MainView (User Control)의 DataContext로 설정됩니다. tabcontrol은 TabItems 컬렉션에 바인딩됩니다. tabcontrol의 내용은 ReportItems User Control이됩니다.탭 내부에서 탭 컨트롤에 탭 추가하기
이 설정은 기본적으로 SSRS의 UI보고를위한 보고서입니다. 첫 번째 탭에는 사용자가 보고서 매개 변수를 선택할 수있는 몇 개의 목록 상자가 표시되는 보고서 목록이 포함되어 있습니다. 매개 변수를 선택한 후 사용자가 버튼을 클릭하면 보고서가 생성되고 보고서 호스트가있는 탭 컨트롤에 탭이 추가됩니다.
탭에서 보고서를 선택하려고하는 이유는 기본보기가 아니기 때문에 선택해야 할 매개 변수가 많고 목록 상자를 MainView에 추가하면 tabcontrol에 남은 공간이 덜보고 사용자가 보고서를 보려면 아래로 스크롤해야합니다.
내 디자인에 결함이 있는지는 잘 모르겠지만 새 ReportItemViewModel을 추가하여 TabItem 컬렉션에 추가하는 방법을 찾고 싶었습니다. 즉, 하위 탭에서 ReportItemViewModel 객체를 MainViewModel에 보내고 colection에 추가하여 형제를 추가 할 수 있습니다.
정적 컬렉션을 사용하여 그렇게 생각했지만 내 OnPropertyChange 메서드를 호출하지 않습니다. 또한 컬렉션이 정적이 아니기 때문에 컬렉션에 객체를 추가 할 수 없으므로 MainViewModel에서 정적 메서드를 사용하면 도움이되지 않습니다.
나는 그 자체를 시작하는 방법에 집착하고 있기 때문에 여기에 어떤 코드도 게시하지 않을 것입니다. 나는 다른 게시물 here 보았지만 그것을 사용하는 방법을 알아낼 수 없습니다.
대단히 죄송합니다. 질문을 명확히하고 싶습니다.
나는 더 나은 디자인을 얻을 수 있다면 어떤 제안이든 열려 있습니다. 나는 필사적이고 어떤 도움을 주시면 감사하겠습니다.
추가 프로세스를 위해 UI를 호스팅하기 위해 팝업 또는 확장기를 사용할 수 있습니다.그렇게하면 화면 부동산을 사용하지 않고 ReportItemViewModel에 논리를 추가하지 않아도됩니다. – AlexDrenea
Popup은 내가 생각해 보았던 부분 이었지만, 제자리를 찾지 않는듯한 느낌이 들었습니다. 확장기에 대해서는 여러 보고서가있는 것처럼 구현하는 방법을 잘 모릅니다. 각 보고서마다 비활성화/보이지 않는 모드로 확장기가 하나 있으며 보고서 선택을 기준으로 활성화/표시되도록 설정해야합니다. 당신은 정교 할 수 있습니까? –
당신은 화면의 부동산을 보존하기를 원하기 때문에 메인 뷰가 아니라 탭에 목록이 있다고하셨습니다. 주 뷰에서 확장기를 사용하면 축소 된 보고서에 충분한 공간을 제공 할 수 있고 확장 할 때 새 보고서를 추가 할 수있는 충분한 공간이 제공됩니다. – AlexDrenea