簡體   English   中英

綁定問題構造函數viewmodel

[英]Binding Issue constructor viewmodel

我對mvvm比較陌生,但是我對從視圖模型進行綁定存在疑問。 我有一個viewmodel,在它的構造函數中,我想填充一個observablecollection。 我的構造函數如下所示:

public StudySelectionViewModel() : base() {
        _studyRepository = StudyRepository.Instance;

        InitializeViewModelData();
    }

InitializeViewModelData()看起來像這樣:

        private void InitializeViewModelData() {
        _studyRepository.RetrieveModalityTypes();
        RaisePropertyChanged("ModalityTypes");
    }

我的屬性ModalityTypes看起來像這樣:

public ObservableCollection<ModalityType> ModalityTypes {
        get {
            return _studyRepository.ModalityTypes;
        }
    }

不用說,我的存儲庫會調用數據庫並檢索數據。 調試時,看起來RaisePropertyChanged比我的_studyRepository.RetrieveModalityTypes方法執行得更早,因此它綁定到一個空屬性。

我在這里想念什么嗎? 我的設計不好嗎? 有任何想法嗎?

提前致謝,

表單初始化時,綁定將檢查屬性。 當引發PropertyChanged通知時,它還將檢查屬性-因此您可能會兩次調用該屬性的getter

我假設您獲取數據的電話是網絡服務電話還是其他電話? Silverlight是異步的,因此您需要考慮初始化表單后,Web服務調用可能會返回

這里有兩件事要考慮。

  1. 您有一個ObservableCollection-它是可觀察的,因此,如果在初始化視圖模型時初始化集合,則在數據服務返回視圖時,將集合添加到集合中而不是用新集合替換它會很好。
  2. 如果確實必須在數據服務數據就緒回調中用新集合替換集合,那么請確保您這樣編寫集合設置器:

     public ObservableCollection<ModalityType> ModalityTypes { get { return _studyRepository.ModalityTypes; } set { this.__studyRepository.ModalityTypes = value; RaisePropertyChanged("ModalityTypes"); { 

    }

暫無
暫無

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

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