C# 如何在执行所有更新例程时显示旋转滚轮?
我目前正在做一些用Xamarin.Forms编写的移动项目。我这里有个问题。我需要更新包含一些数据的listview。因此,我启用了C# 如何在执行所有更新例程时显示旋转滚轮?,c#,xamarin,xamarin.ios,xamarin.android,xamarin.forms,C#,Xamarin,Xamarin.ios,Xamarin.android,Xamarin.forms,我目前正在做一些用Xamarin.Forms编写的移动项目。我这里有个问题。我需要更新包含一些数据的listview。因此,我启用了IsPullToRefreshEnabled=true和 listView.Refreshing += (sender, e) => { method1(); method2(); listView.EndRefresh(); }; 然而,我不知道如何使旋转指示器显示,直到所有更新例程完成 public class Class1
IsPullToRefreshEnabled=true
和
listView.Refreshing += (sender, e) => {
method1();
method2();
listView.EndRefresh();
};
然而,我不知道如何使旋转指示器显示,直到所有更新例程完成
public class Class1 : ContentPage
{
readonly Class2 mangr = new Class2();
void BuildUI()
{
listView = new ListView
{
ItemsSource = new object[] { },
ItemTemplate = new DataTemplate(listRender.MakeCell),
RowHeight = 88,
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
IsPullToRefreshEnabled = true,
IsRefreshing = false,
};
listView.Refreshing += (sender, e) =>
{
listView.IsRefreshing = true;
manager.ForceUpdate();
listView.IsRefreshing = false;
listView.EndRefresh();
};
}
}
public class Class2
{
public bool updating = false;
public void PleaseUpdate()
{
if (!running)
{
return;
}
if (!data.loading)
{
updating = true;
PleaseUpdate();
updating = false;
}
}
void PleaseUpdate(Action afterall = null){/some code/}
}
你是说PullToRefresh活动指示器吗?为此,必须将
IsRefreshing
属性设置为true
。因此,只要在开始时将其设置为true
,并在准备就绪时将其设置为false
,如下所示
listView.Refreshing += (sender, e) => {
listView.IsRefreshing = true;
method1();
method2();
listView.IsRefreshing = false;
listView.EndRefresh();
};
如果方法是async
,这将不起作用,因为它将直接转到IsRefreshing=false
有多种方法可以实现这一点,运行同步,这可能不是您想要的,或者创建一个绑定到listView.IsRefreshing
属性的公共属性。然后从您真正完成加载的位置设置该属性
更新
在提供代码时,一种方法是:
- 将您的
设置为listView.IsRefreshing
pumpsManager.isLoading
- 在
上实施,并在FuelPumpsDataManager
上实施。注意,您需要将“isLoading”转换为属性。另一种更简单的方法是使用NuGet包isLoading
现在,无论何时开始和停止加载,您都可以设置
isLoading
,并且您的ListView应该相应地显示动画。您是指PullToRefresh ActivityIndicator吗?为此,必须将IsRefreshing
属性设置为true
。因此,只要在开始时将其设置为true
,并在准备就绪时将其设置为false
,如下所示
listView.Refreshing += (sender, e) => {
listView.IsRefreshing = true;
method1();
method2();
listView.IsRefreshing = false;
listView.EndRefresh();
};
如果方法是async
,这将不起作用,因为它将直接转到IsRefreshing=false
有多种方法可以实现这一点,运行同步,这可能不是您想要的,或者创建一个绑定到listView.IsRefreshing
属性的公共属性。然后从您真正完成加载的位置设置该属性
更新
在提供代码时,一种方法是:
- 将您的
设置为listView.IsRefreshing
pumpsManager.isLoading
- 在
上实施,并在FuelPumpsDataManager
上实施。注意,您需要将“isLoading”转换为属性。另一种更简单的方法是使用NuGet包isLoading
现在,您可以在启动和停止加载时设置
isLoading
,并且您的ListView应该相应地显示动画。谢谢您的回答。是的,我试过了。很抱歉,我忘了提到那些方法在后台调用异步方法。那东西能正常工作吗?你用的是绑定还是MVVM?是的,我用的是MVVM是的,我明白了。但现在还不是很清楚。所以我有一种dataManager
,我要求更新它,我刚刚在类中创建了一个名为isupdding
的字段,它指示数据当前正在更新。你能告诉我我到底应该如何绑定这些东西吗?你有什么方法可以告诉我你现在拥有的代码吗?谢谢你的回答。是的,我试过了。很抱歉,我忘了提到那些方法在后台调用异步方法。那东西能正常工作吗?你用的是绑定还是MVVM?是的,我用的是MVVM是的,我明白了。但现在还不是很清楚。所以我有一种dataManager
,我要求更新它,我刚刚在类中创建了一个名为isupdding
的字段,它指示数据当前正在更新。你能告诉我我到底应该如何绑定这些东西吗?你有什么方法可以告诉我你现在的代码吗?