2014-07-11 110 views
1

我將盡我所能詳細解釋問題。使用新的用戶控制窗口MVVM更新詳細信息窗格WPF

我正在使用WPF,MVVM和PRISM。下面是應用程序的結構:


CONTAINER 

User control containing a toolbar 

----------   LEFT PANE USER CONTROL    
right pane 
user control 
---------- 

--------------------------------------------------------------- 

容器是殼牌,其主機的應用程序的外觀。 Shell還包含許多不同的用戶控件,如用戶用戶控件,角色用戶控件,類別用戶控件。所有控件都已摺疊。

工具欄上有諸如保存,編輯,刪除等選項。當用戶選擇工具欄上的編輯選項,然後我使用WPF命令來調用我的視圖模型編輯方法,如下所示:

private void Edit(UserViewModel userViewModel) 
     { 
      // load the edit page    

     } 

的toolbar.Datacontext被動態設置爲用戶控制的,其的DataContext是一個視圖模型。因此,可以在不同的上下文中使用相同的工具欄來在不同的視圖模型上調用命令。

在這一點上,我已經得到了在Edit方法中傳遞的正確的UserViewModel。這很好!但現在!我需要更新詳細信息窗格以反映EditView。我怎樣才能做到這一點?所有的控件都被嵌入在Shell.xaml文件中。此外,ViewModel在單獨的程序集中,而Shell在單獨的程序集中。

這是我需要幫助的地方!怎麼可能不知道殼牌的viewModel(殼牌引用ViewModel程序集而不是其他方式)可以將EditView注入Shell詳細信息窗格。

+0

你如何將你的觀點注入細節面板?通過數據模板,通過區域管理器,還是直接設置爲詳細信息面板的內容?如果你可以發佈一個基本的容器xaml的讚賞。 – pushpraj

回答

1

可以使用CommandParameter屬性勢必要在傳遞什麼。

<Button Content="Edit" Command="{Binding Path=EditCommand}" CommandParameter="{Binding SelectedItem, ElementName=datagrid}" /> 

哪裏datagrid是你提到的數據網格。

0

坐你的CONTAINER XAML和寫

<CONTAINER.Resources> 
    <DataTemplate DataType="{x:Type vm:UserViewModelVM}"> 
     <!--if your View is a separat Usercontrol--> 
     <vw:UsertV /> 
     <!--else insert your UsertV xaml--> 
    </DataTemplate> 
</CONTAINER.Resources> 

此XAML告訴你的應用程序,如果一個UserViewModelVM直接顯示它在你的DataTemplate

現在你去把它包起來,以你的LEFT PANE USER CONTROL

<LEFT PANE USER CONTROL Content={Binding yourVMProperty} 
         DataContextContent={Binding yourVMProperty}/> 

要公開UserViewModelVM我們將其作爲內容綁定,現在它應該工作fi NE

也不要忘了RaisPropertyChanged並刪除崩潰,因爲沒有必要再隱藏:)

問我,如果你需要進一步的解釋。

相關問題