3 回答

TA貢獻1735條經驗 獲得超5個贊
您可以在 App.xaml 中實例化該視圖模型,以便整個應用程序都可以訪問它。
<Application.Resources>
<local:ViewModel x:Key="sharedViewModel" />
</Application.Resources>
然后在您想要使用該數據上下文時的視圖中,您執行以下操作...
DataContext="{StaticResource sharedViewModel}"

TA貢獻2021條經驗 獲得超8個贊
我有同樣的問題,但找不到好的答案。經過一段時間的思考,我得出的結論是,在大多數情況下,最好在視圖模型和視圖之間創建一對一的映射。因此,在這種情況下,我將創建兩個獨立的視圖模型,它們繼承自基本視圖模型。這樣你就可以在基本視圖模型中放置任何常見的東西,并添加任何可能與更具體的視圖模型不同的字段或方法。如果視圖模型真的是等效的,那么您可能首先要問自己為什么有兩個單獨的視圖。您可以考慮將它們合并為一個視圖。有兩個單獨的視圖可能是您想要的,但這只是需要考慮的事情。

TA貢獻1785條經驗 獲得超4個贊
實現 ViewModelLocator 既簡單又容易,也是推薦的方法之一。
Idea 已經在 ViewModelLocator 類中定義了所有的 ViewModel,并在需要的地方訪問 ViewModel。在不同的視圖中使用相同的 ViewModel 在這里不會有問題。
public class ViewModelLocator
{
private MainWindowViewModel mainWindowViewModel;
public MainWindowViewModel MainWindowViewModel
{
get
{
if (mainWindowViewModel == null)
mainWindowViewModel = new MainWindowViewModel();
return mainWindowViewModel;
}
}
private DataFactoryViewModel dataFactoryViewModel;
public DataFactoryViewModel DataFactoryViewModel
{
get
{
if (dataFactoryViewModel == null)
dataFactoryViewModel = new DataFactoryViewModel();
return dataFactoryViewModel;
}
}
}
應用程序.xaml
xmlns:core="clr-namespace:MyViewModelLocatorNamespace"
<Application.Resources>
<core:ViewModelLocator x:Key="ViewModelLocator" />
</Application.Resources>
用法
<Window ...
DataContext="{Binding Path=MainWindowViewModel, Source={StaticResource ViewModelLocator}}">
參考:所以問題 代碼從那里復制..因為我無法從我的項目中撕下代碼..
- 3 回答
- 0 關注
- 412 瀏覽
添加回答
舉報