2011-08-15 7 views
0

M-V-VM으로 WPF를 배우고 있습니다. 그리고 나는 ICommand, RelayCommand을 사용하고 있습니다. 여러 뷰, 모델 및 뷰 모델이 있습니다. 응용 프로그램 시작시 MainWIndowView가 열립니다. MainWindowView에는 MainWindowViewModel을 통해 "FileListview"라는 또 다른 WPF 윈도우를 여는 버튼이 있습니다. FileListView에는 FileListViewModel을 통해 "LookupView"라는 또 다른 WPF 윈도우를 열 것으로 예상되는 "보기 조회"버튼이 있습니다. 그러나 MainWIndowView 대신 App.xaml.cs에서 FileListView를 지정하지 않으면이 단추를 사용할 수 없습니다. "FileListView"에서 시작하도록 응용 프로그램을 만들면 "조회 조회"버튼이 작동하는 이유를 이해할 수 없습니다. 또한 하나의보기 단추가 다른보기를 열고있는 것을 제외하고는 아무 것도 가지지 않기 때문에 MainWindowView 및 FileListView에 대한 모델이 필요한지 여부를 이해할 수 없습니다. 파일 뒤에 코드에 는 "App.xaml.cs를"나는 누군가가 내 문제를 반영 M-V-VM과 WPF를 사용하여 좋은 기사 또는 샘플 코드에 날 지점 수 있다면MVVM에서 WPF를 사용하여 주 창에서 하위 창을 열 때 발생하는 문제

public partial class App : Application 
{ 
    protected override void OnStartup(StartupEventArgs e) 
    { 
     base.OnStartup(e); 
     WPFProject. MainWIndowView window = new MainWIndowView(); 
     MainWIndowViewModel VM = new MainWIndowViewModel(); 
     window.DataContext = VM; 
     window.Show(); 
    } 
} 

내가 감사하겠습니다있다.

+2

1) 표시 코드하는 버튼을 클릭하여 열려있는 FileListview; 2) ViewModel을 LookupView에 바인딩하는 방법을 보여줍니다. 3) ViewModel을 FileListview에 바인딩하는 방법을 보여줍니다. – sll

답변

0

문제를 다시 생각한 후에 해결책을 찾아 냈습니다. 문제의 원인 : ViewModel 클래스와 View를 연결하지 않았습니다. 그래서 FileListView.xaml.cs의 코드 뒤에 다음 코드를 추가했습니다.

public partial class FileListView: Window 
{ 
    private FileListViewModel _ fileListViewModel = new FileListViewModel(); 
    public FileListViewModel() 
    { 
    InitializeComponent(); 
    base.DataContext = _fileListViewModel; 
    } 
} 

감사합니다

1

Here 내 접근 방식은 대화 상자/자식 창을 mvvm 및 wpf와 함께 사용하는 것입니다. 슬레브 (sllev)의 의견을 메모하고 모든 관련 코드를 게시하십시오.

+0

내 책에서 비슷한 접근법을 보여줍니다. –