3 回答

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

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

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
實(shí)現(xiàn) ViewModelLocator 既簡單又容易,也是推薦的方法之一。
Idea 已經(jīng)在 ViewModelLocator 類中定義了所有的 ViewModel,并在需要的地方訪問 ViewModel。在不同的視圖中使用相同的 ViewModel 在這里不會(huì)有問題。
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;
}
}
}
應(yīng)用程序.xaml
xmlns:core="clr-namespace:MyViewModelLocatorNamespace"
<Application.Resources>
<core:ViewModelLocator x:Key="ViewModelLocator" />
</Application.Resources>
用法
<Window ...
DataContext="{Binding Path=MainWindowViewModel, Source={StaticResource ViewModelLocator}}">
參考:所以問題 代碼從那里復(fù)制..因?yàn)槲覠o法從我的項(xiàng)目中撕下代碼..
- 3 回答
- 0 關(guān)注
- 417 瀏覽
添加回答
舉報(bào)