簡體   English   中英

如何解決將通用列表綁定到Xamarin形式的ListView的問題?

[英]How to fix the issue with binding generic list to listview in xamarin forms?

我是Xamarin表格的新手。 我試圖使用Xamarin表單中的ListView進行卡片視圖。 問題是我在綁定通用列表中的數據時遇到問題。

listview中顯示的行數與列表中的行數相同,但是屬性值未綁定到XAML標記

我已經嘗試通過將兩種方法的數據綁定到XAML后面的代碼並直接綁定到XAML的項目源來使用它

<?xml version="1.0" encoding="utf-8" ?>
 <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="MedicalCenter.Pages.MenuPage">
   <ListView x:Name="MyListView"
        ItemsSource="{Binding Items}"
        ItemTapped="Handle_ItemTapped"
        CachingStrategy="RecycleElement">

    <ListView.ItemTemplate>
        <DataTemplate>
            <TextCell Text="{Binding lstHomeMenu}" />
        </DataTemplate>
    </ListView.ItemTemplate>

  </ListView>
</ContentPage>









   public partial class HomePage : ContentPage
   {

    public HomePage ()
    {
        InitializeComponent ();
        this.BindingContext = new HomeMenuViewModel();
    }
   }












    public class HomeMenuViewModel
    {
        public IList<HomeMenu> lstHomeMenu { get; set; }
        public HomeMenuViewModel()
        {
            lstHomeMenu = new List<HomeMenu>();
            GenerateCardModel();
        }

    private void GenerateCardModel()
    {
        lstHomeMenu.Add(new HomeMenu()
        {
            Title = "Request Appointment",
            Icon = "icon_appointment.png",
            BackgroundColor = "#479589"
        });
        lstHomeMenu.Add(new HomeMenu()
        {
            Title = "Order Prescription",
            Icon = "icon_prescription.png",
            BackgroundColor ="#4383D9"
        });
    }
}

   public class HomeMenu
   {
       public string Title { get; set; }
       public string Icon { get; set; }
        public string BackgroundColor { get; set; }
       }
   }

當我將列表綁定到ListView時,數據將正確綁定。

public class HomeMenuViewModel
{
    public IList<string> lstHomeMenu { get; set; }
    public HomeMenuViewModel()
    {
        lstHomeMenu = new List<string>();
        GenerateCardModel();
    }

    private void GenerateCardModel()
    {
        lstHomeMenu = new ObservableCollection<string>
        {
            "1",
            "2",
            "3",
            "4",
            "5",
            "6"
        };
    }
}
}


<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="MedicalCenter.Pages.MenuPage">
  <ListView x:Name="MyListView"
        ItemsSource="{Binding Items}"
        ItemTapped="Handle_ItemTapped"
        CachingStrategy="RecycleElement">

    <ListView.ItemTemplate>
    <DataTemplate>
        <TextCell Text="{Binding .}" />
    </DataTemplate>
    </ListView.ItemTemplate>

  </ListView>
</ContentPage>

但是當我綁定列表時,綁定不起作用,但是我在ListView中得到的行數與列表中的行數相同。

編輯問題:

列表查看結果

這就是我得到的視圖。 好像列表是綁定的,但是對象內部的屬性沒有綁定

UPD:

我仍然認為您的XAML是一個問題。

我已經根據提供的代碼重新創建了一個項目。 請在這里查看第10和16行。

==========

原始答案:

我認為這個問題在這里:

ItemsSource="{Binding Items}"

您的HomeMenuViewModel包含public IList<string> lstHomeMenu { get; set; } public IList<string> lstHomeMenu { get; set; } public IList<string> lstHomeMenu { get; set; } ,而不是Items

好。 我發現了問題。 在構建發行版本時,當我在“ Android選項”屬性中的“鏈接”菜單中選擇“ SDK和用戶程序集”時。 之后,列表視圖不會綁定數據。 當我選擇“僅SDK程序集”時,它可以正常工作。 不知道為什么會這樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM