我已經搜索了互聯網最可能是一個簡單的解決方案,但似乎沒有像我一樣的問題。拉到刷新執行命令只有一次
所以簡單介紹一下它,我使用Xamarin形式,我有一個ListView:
<ListView x:Name="kpiList"
Style="{StaticResource customList}"
HasUnevenRows="true"
SeparatorVisibility="None"
IsPullToRefreshEnabled="true"
Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="3">
</ListView>
我定義它的RefreshCommand和IsRefreshing性質是這樣的:
public partial class MainPage : ContentPage
{
bool _isRefreshing = false;
public bool IsRefreshing
{
get { return _isRefreshing; }
set
{
_isRefreshing = value;
OnPropertyChanged(nameof(IsRefreshing));
}
}
public ICommand RefreshData;
public MainPage()
{
RefreshData = new Command(RepopulateList);
kpiList.RefreshCommand = RefreshData;
kpiList.IsRefreshing = IsRefreshing;
{
void RepopulateList()
{
IsRefreshing = true;
Controller.KPIs.Clear();
foreach (KPIObj kpi in await
WebServices.GetUpdatedKPI(Controller.SavedKPIIds))
{
Controller.KPIs.Add(kpi);
}
IsRefreshing = false;
}
}
奇怪的是我第一次刷新它的效果非常好。但是,我第二次嘗試時,它永遠不會進入Command設置的代碼塊。
就好像ListView在第一次拉動刷新後「丟失」指向該命令的指針。
(對不起,我PORR英文)每次調用您的刷新命令返回命令的diferent例如,根據你的代碼。我想這是錯誤。你應該只返回它的一個實例......我建議你改變你的命令定義,將其設置爲一個分離的方法,並將其設置在構造函數 –
爲了確保這一點,請將方法體包圍在try塊中並提醒異常。我想這是拋出一個異常無處 –
感謝Diego的建議,我試過你的想法,它似乎仍然做同樣的事情。沒有錯誤被拋出。 –