第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何告訴MVVMLight創(chuàng)建新的視圖模型?

如何告訴MVVMLight創(chuàng)建新的視圖模型?

C#
萬千封印 2022-09-04 16:27:24
我在WPF項(xiàng)目中使用MvvmLight,并設(shè)置了我的視圖模型定位器,如其示例所示...public class ViewModelLocator {  public ViewModelLocator() {    SimpleIoc.Default.Register<MainWindowViewModel>();    SimpleIoc.Default.Register<ProductDetailsWindowViewModel>();  }  public MainWindowViewModel MainWindowViewModel =>    SimpleIoc.Default.GetInstance<MainWindowViewModel>();  public ProductDetailsWindowViewModel ProductDetailsWindowViewModel =>     SimpleIoc.Default.GetInstance<ProductDetailsWindowViewModel>();}我在 XAML 的開始標(biāo)記中有以下行...DataContext="{Binding Source={StaticResource Locator},    Path=ProductDetailsWindowViewModel}"這有效,但定位器始終返回相同的視圖模型,即相同的實(shí)例,這意味著如果我打開了多個(gè)產(chǎn)品詳細(xì)信息窗口,它們將共享相同的視圖模型。當(dāng)我請(qǐng)求一個(gè)新的視圖模型時(shí),我如何告訴 MvvmLight 創(chuàng)建新的視圖模型?
查看完整描述

2 回答

?
桃花長相依

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊

當(dāng)我請(qǐng)求一個(gè)新的視圖模型時(shí),我如何告訴 MvvmLight 創(chuàng)建新的視圖模型?

使用訪問 a 的方法的重載,并向其傳遞唯一值:GetInstancestringstring

public MainViewModel Main =>
    ServiceLocator.Current.GetInstance<MainViewModel>(System.Guid.NewGuid().ToString());



查看完整回答
反對(duì) 回復(fù) 2022-09-04
?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊

我們總是使用Ninject,默認(rèn)情況下它似乎可以做你想要的:


首先,為 Ninject 添加對(duì) Nuget 包的引用


然后向項(xiàng)目中添加一個(gè)類并使用如下所示的代碼...ViewModelLocator


public class ViewModelLocator {

  public IKernel Kernel { get; set; }


  public ViewModelLocator() {

    Kernel = new StandardKernel();

  }


  public MainWindowViewModel MainWindowViewModel =>

    Kernel.Get<MainWindowViewModel>();

  public ProductDetailsWindowViewModel ProductDetailsWindowViewModel =>

    Kernel.Get<ProductDetailsWindowViewModel>();

}

在 App.xaml 中為定位器添加靜態(tài)資源,如下所示...


<Application.Resources>

  <viewModels:ViewModelLocator x:Key="Locator" />

</Application.Resources>

確保您的視圖模型繼承自 ...ViewModelBase


public class ProductDetailsWindowViewModel : ViewModelBase

  // ...

然后你應(yīng)該按照你想要的方式工作。每個(gè)窗口都將獲得自己的類實(shí)例。DataContext


你需要在這里確保的一件事是自己清理,否則你最終會(huì)有大量的鬼視圖模型。在窗口的卸載事件中,將DataContext


private void Window_Closing(object sender, CancelEventArgs e) {

  DataContext = null;

}


查看完整回答
反對(duì) 回復(fù) 2022-09-04
  • 2 回答
  • 0 關(guān)注
  • 105 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)