我在MvvmCross很新,所以我可能只是做錯了什麼;或不。MvxPropertyChangedListener奇怪的行爲遇到和解決方法
爲了以防萬一,這也是一種解決方法,並指出要注意其他開發人員。
使用:的Windows Phone 8
問題:從視圖頁面,使用MvxPropertyChangedListener訂閱工作了一段時間,然後停止。
場景: ViewModel有一個屬性IsBusy,出於特定的原因,我需要從查看頁面代碼(.xaml.cs)後面訪問。的方式我想它會工作...
public LoadingView()
{
InitializeComponent();
// until loaded, we can not access viewmodel
Loaded += (sender, args) =>
{
var viewModel = (LoadingViewModel) ViewModel;
// add listener
new MvxPropertyChangedListener(viewModel).Listen(() => viewModel.IsBusy,() =>
{
// do something
});
};
}
現在,用戶點擊一個命令按鈕,關於這一點我打電話使用jsonRestClient異步任務休息方法;一旦任務完成,isBusy被設置爲false;
注意:我也有isBusy綁定到xaml文件中的元素(到progressBar可見性)。
在WP Emulator中,單擊此按鈕確實會引發偵聽器事件,但只會觸發兩到三次。之後,監聽器中的代碼不再執行。有趣的是,xaml綁定仍然更新;
我不明白GC如何發揮作用;因爲該屬性在ViewModel本身中;
變通方法:沒有多少時間來調查此問題;相反,我現在使用IMvxMessenger,並從我的View代碼後面訂閱;迄今如此好,沒有錯誤。
林蛙