簡體   English   中英

如何存儲加載的View,這樣當我們到達同一個View時就不需要再次初始化組件

[英]How to store the loaded View, so that we don't need to Initialize the component again when we reach to the same View

實際上我有兩個按鈕。 當我單擊第一個按鈕時,一個 UserControl 將在 ContentControl 中可見,當我單擊第二個按鈕時,另一個 UserControl 將出現在 ContentControl 中。 問題是,每次單擊按鈕時,它都會加載特定的 UserControl->InitializeComponent() 方法。 我想在開始時只加載一次視圖,而不是每次從一個 UserControl 切換到另一個時。 非常感謝!

你有幾個選擇。

一本字典就可以了。

 Dictionary<Type, UserControl> MyControls

您可以檢查您是否已經有一個實例:

 MyControls.ContainsKey(TypeOfUserControl);

如果沒有,請使用您已有的實例或新建一個實例。 當然也可以添加到字典中。

該字典可以保存在依賴注入容器中,也可以是 static,因此您可以從任何您喜歡的地方引用它。 或者也許您關心的所有用戶控件都在一個地方實例化。

您也可以使用依賴注入並將所有用戶控件設為單例。

確切的語法取決於您使用的 DI 容器,但對於 Microsoft 容器:

  services.AddSingleton<YourUserControl>();

如果這特別成問題(出於我無法想象的原因),那么您也許可以使用延遲實例化模式來使您的用戶控件有效地靜態化。

https://csharpindepth.com/articles/singleton#lazy

或者,這實際上是一段代碼中的兩個用戶控件,您可以簡單地緩存在兩個私有變量中。

筆記:

我想知道你在初始化時在做什么。

一種常見的模式是 viewmodel 首先是 viewmodel 實例將呈現給視圖並模板化到 UI 中。 在這種情況下,初始化邏輯將在該視圖模型中。 這種方法可能只是改變了你在字典或依賴注入容器中緩存的東西的類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM