2017-06-23 9 views
0

ログイン時またはダッシュボードページへのナビゲート時に、APIからデータをフェッチするときに、私のフェッチデータをフェッチするために追加のボタン(Show Communities)を使用しています。ここをButton_OnClickedGetDashboardボタンを使用しないXamarinフォームでのListViewデータバインディング

<StackLayout BackgroundColor="#30af91" Padding="60" VerticalOptions="Center"> 

<Entry Text="{Binding Username}" Placeholder="Username"/> 
<Entry Text="{Binding Password}" IsPassword="True" Placeholder="Password"/> 

<Button Command="{Binding LoginCommand}" Text="Login" Clicked="Button_OnClicked"/> 

</StackLayout> 

私のコードは私のダッシュボードここ

public ICommand LoginCommand { get { return new Command(async() => { var accesstoken = await _apiServices.LoginAsync(Username, Password); Settings.AccessToken = accesstoken; }); } } 

ある

のみLoginViewModelで
をLoginCommand

private async void Button_OnClicked(object sender, EventArgs e) 
    { 
     await Navigation.PushModalAsync(new Dashboard()); 
    } 

ダッシュボードページに移動していますページ

<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     xmlns:viewModels="clr-namespace:epolleasy.ViewModels;assembly=epolleasy" 
     x:Class="epolleasy.Views.Dashboard"> 

<MasterDetailPage.Master> 

    <ContentPage Title="Menu"> 

     <ContentPage.BindingContext> 
      <viewModels:DashboardViewModel /> 
     </ContentPage.BindingContext> 

     <ContentPage.Content> 
     <StackLayout> 

      <Button x:Name="BtnActiveForm" Text="Active Forms" Clicked="BtnActiveForm_OnClicked"></Button> 
      <Button x:Name="BtnCommunity" Text="My Communities" Clicked="BtnCommunity_OnClicked"></Button> 
      <Button x:Name="BtnHistory" Text="Sealed Forms" Clicked="BtnHistory_OnClicked"></Button> 

      <Button Text="Logout" Command="{Binding LogoutCommand}" Clicked="Logout_OnClicked"/> 

     </StackLayout> 
     </ContentPage.Content> 

    </ContentPage> 

</MasterDetailPage.Master> 


</MasterDetailPage> 

ここでは、私がGetDashboardコマンド

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     xmlns:viewModels="clr-namespace:epolleasy.ViewModels;assembly=epolleasy" 
     x:Class="epolleasy.Views.DpCommunities"> 

<ContentPage.BindingContext> 
    <viewModels:DashboardViewModel /> 
</ContentPage.BindingContext> 

<ContentPage.ToolbarItems> 
    <ToolbarItem Text="Add New" 
       Icon="add.png" 
       Priority="0" 
       Clicked="MenuItem_OnClicked"/> 
</ContentPage.ToolbarItems> 


<StackLayout> 

    <Button Command="{Binding GetDashboard}" Text="Show Communities"/> 

    <ListView ItemsSource="{Binding UserDashboard.Com}" 
       HasUnevenRows="True"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <ViewCell> 
        <StackLayout> 
         <Label Text="{Binding CommunityName}"/> 
         <Label Text="{Binding CommunityUsers.Count}"/> 
         <Label Text="{Binding FormsCommunity.Count}"/> 
        </StackLayout> 
       </ViewCell> 
      </DataTemplate> 
     </ListView.ItemTemplate> 

    </ListView> 

</StackLayout> 

</ContentPage> 

を使用して、余分なボタンを使用していますページはここにここに私のViewModelでGetDashboardコマンド

public ICommand GetDashboard 
{ 
    get 
    { 
     return new Command(async() => 
     { 
      var accessToken = Settings.AccessToken; 
      UserDashboard = await _apiServices.GetDashboard(accessToken); 
     }); 
    } 
} 

されている私のコミュニティであります私のUserDashboard同じビューモデル。

public Dashboard UserDashboard 
    { 
     get { return _userDashboard; } 
     set 
     { 
      _userDashboard = value; 
      OnPropertyChanged(); 
     } 
    } 

私はその、余分なボタンを取り除きたいです。

+0

このページのOnAppearingメソッドを使用してデータ要求を呼び出す – Jason

+0

これについては混乱します。あなたは私をガイドすることができますか? 1時間後にこの最後の年のプロジェクトを発表する必要があります。 –

+0

@UzairNadeemあなたは少なくともJasonの答えを受け入れるか、それがあなたのためにうまくいかなかった理由を答えることができます。 –

答えて

0

すべてのページには、ページが表示されているときに起動するOnAppearingメソッドがあります。これを使用して、ユーザーがボタンをクリックするのではなく、データを読み込むことができます。

public override async void OnAppearing() { 

    base.OnAppearing(); 

    var accessToken = Settings.AccessToken; 
    UserDashboard = await _apiServices.GetDashboard(accessToken); 
} 
関連する問題