2016-12-20 1 views
0

Ich benutze Xamarin Formen PCL-Projekt mit Android und iOS-Projekt.Refresh Control versteckt sich nicht nach der Aktualisierung abgeschlossen

Wenn ich pull verwenden, um in iOS (iPhone 6 Plus) zu aktualisieren, ist das Aktualisierungssteuerelement nicht ausgeblendet. Das Refresh Control Hiding funktioniert mit allen iPhones außer einigen iPhone 6 Plus und 7 Plus.

Hier ist mein Code. Design:

<ListView x:Name="listviewCompanies" 
    SeparatorVisibility="None" 
    RowHeight="210" 
    HasUnevenRows="false" 
    ItemTapped="OnItemTapped" 
    ItemSelected="OnItemSelected" 
    IsPullToRefreshEnabled="True"> 

    <ListView.ItemTemplate> 
     <DataTemplate> 
      <ViewCell> 
       <views:CompaniesListTemplate /> 
      </ViewCell> 
      </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

Refresh-Befehl:

listviewCompanies.RefreshCommand = new Command(() => 
{ 
    BindCompanyList(); 
    listviewCompanies.IsRefreshing = false; 
}); 

Wie kann ich mich verstecken die Refresh-Steuerung auf allen iPhones?

Antwort

0
private bool _isListRefreshing; 
/// <summary> 
/// List of Messages, to be bound to the view 
/// </summary> 
public bool IsListRefreshing 
{ 
get { return _isListRefreshing; } 
set { Set(() => IsListRefreshing, ref _isListRefreshing, value); } 
} 

Verwenden Sie IsRefreshingProperty zum Binden mit Listview

_listListView.SetBinding(ListView.IsRefreshingProperty, "IsListRefreshing"); 

IsListRefreshing = true; 
//refresh code 
IsListRefreshing = false; 

und legen Sie das Flag IsListRefreshing in Ihrer Aktualisierungsmethode fest. Dies ist auch eine gute Annäherung Hidding nach der Aktualisierung abgeschlossen

0

folgender Code arbeitet an meiner Maschine diesen Code beziehen und versuchen, wie dieser

Seite-Code für Listview zu implementieren: -

var _listListView = new ListView 
     { 
      BackgroundColor = Color.Transparent, 
      SeparatorVisibility = SeparatorVisibility.None, 
      HasUnevenRows = true, 
      IsPullToRefreshEnabled = true, 
     }; 
     _listListView.SetBinding(ListView.ItemsSourceProperty, "ItemSource"); 
     _listListView.ItemTemplate = new DataTemplate(typeof(listviewCell)); 
     _listListView.RefreshCommand = new Command(async() => 
     { 
      await _viewModel.PullToRefreshCommand.ExecuteAsync(); 
      _listListView.IsRefreshing = false; 
     }); 

Viewmodel-Code für PullToRefreshCommand: -

/// <summary> 
    /// Pull to refresh 
    /// </summary> 
    private RelayAsyncCommand _pullToRefreshCommand; 
    public RelayAsyncCommand PullToRefreshCommand 
    { 
     get 
     { 
      return _pullToRefreshCommand ?? 
       (_pullToRefreshCommand = new RelayAsyncCommand(async() => 
       { 
        /*do Code to download data from server to local*/ 
        /*await RefreshCommand.ExecuteAsync();*/ 
       })); 
     } 
    } 
+2

können Sie in XAML-Code auch anstelle von CS-Design – sumeet

+2

versuchen, RelayAsyncCommand verwenden – sumeet

+0

Danke. Ich benutze _listListView.IsRefreshing = true; _listListView.IsRefreshing = false; dann funktioniert es für mich –

Verwandte Themen