2016-07-28 3 views
2

ViewModel 당 하나의 뷰를 인스턴스화하는 방법이 있습니까? 나는 현재뷰 모델 당 하나의 뷰 인스턴스화 (동일한 유형의 여러 뷰)

<DataTemplate DataType="{x:Type vm:CustomerViewModel}"> 
    <vw:CustomerView/> 
</DataTemplate> 

자신의 Viewmodels에 뷰를 적용하지만 내 작업을하는 것입니다으로보기는 내가 뷰 모델 당 하나의보기를 만드는 대신 단지의 DataContext를 변경 내 프로그램이 필요 자신의 초점을 텍스트 상자의 선택을 기억합니다.


는 이미이 두 전체 주를 검색하고 내 질문에 내가 (텍스트 상자 선택을 기억하는 방법이 아니라) 여러 동일한 유형의 조회수 :

답변

1
을 인스턴스화 할 수 있습니다 단지 여부 (방법)입니다

귀하의보기 모델에는 귀하가 볼 수있는 선택 상태가 포함되어야합니다. 그러면 DataTemplate이 정상적으로 작동합니다.

+0

아이디어를 주셔서 감사합니다.하지만 이미 시도했는데 ... 제 질문은 여러 가지보기를 인스턴스화 할 수 있는지 여부입니다. 솔직히 말해서 왜하지 않을 이유가 없는지 보았습니다. 그것은 심지어 내가 주목할만한 방법으로 성능에 영향을 미치지 않을 것이라고 생각합니다. – hali

+0

물론, 그것은 꽤 로터리이고 모든 연결을 추적해야합니다. –

1

내가 처리하는 방법은 내 ViewModel을 코드 ​​배후의 xaml에 대한 입력으로 만드는 것입니다. 예를 들면 :

다음
public partial class AddMember : Window 
{ 
    StructureGeneratorVM mainVM = null; 
    public AddMember(object vm) 
    { 
     mainVM = (StructureGeneratorVM)vm; 
     DataContext = mainVM; 
     InitializeComponent(); 
    } 
} 

, 나는 this 전달하고 내 프로그램의 모든 창 (원래 MainWindow를에 속하는) 같은 VM에서 작업하는 기본 윈도우의 VM에서 창을 열 때

당신이 묻고있는 것입니까?

+0

아이디어가 좋다지만 내 질문에 대한 뭔가 다른 : 내 문제는 WPF 항상보기 유형 중 하나만 개체를 ​​만든 다음보기의 "다른 인스턴스"로 전환 할 때 DataContext를 변경하는 것입니다. 그것을 기대한다). 변경하려는 더러운 속임수가 내 문제가 해결 될 경우 ... – hali

+0

보기의 "다른 인스턴스"를 만들 때 생성과 함께 datacontext를 전달합니까? – Kikootwo

+0

예, 물론 ...하지만 뷰의 다른 인스턴스를 어떻게 만듭니 까? _ 위에서 설명한대로 DataTemplate 당 ViewModels에 뷰를 적용하면 하나의 뷰 객체 만 만들어지고 DataContext 만 변경됩니다 (생성하려는 동안 대신 다른보기) – hali