簡體   English   中英

Xamarin Forms無法找到如何將對象與詳細視圖綁定

[英]Xamarin Forms can't find how to bind object with a detail view

我使用的是Xamarin Forms,在列表視圖中單擊后,我不想顯示元素的細節。 它將打開一個帶有細節的新視圖。 我不知道如何將整個對象綁定到視圖,以便輕松使用其屬性。

這是我的代碼:

   public partial class ContactDetailPage : ContentPage
        {
            public ContactDetailPage(Agency agencyItem)
            {
                InitializeComponent();
                // The agencyItem is get from a list view
                // HERE I suppose I need to bind the agencyItem to the view ?
            }
        }

以下是我展示代理商的詳細信息:

<?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="Project.ContactDetailPage">
    <ContentPage.Content>
            <StackLayout Spacing="0">
                <Label Text="{Binding agency.name}" FontSize="Micro" LineBreakMode="TailTruncation" />
                <Label Text="{Binding agency.address}" FontSize="Micro" LineBreakMode="TailTruncation" />
            </StackLayout>

    </ContentPage.Content>
</ContentPage>

如何將視圖綁定到agencyItem以顯示它?

查看Xamarin文檔

簡短的回答是:

BindingContext = agencyItem;

BindingContext是每個Page上的一個屬性,它負責綁定等。 請注意,如果name直接在agencyItem ,則無需執行<Label Text="{Binding agency.name}" ... /> 您可以直接使用<Label Text="{Binding name}" ... /> 所以從根對象開始。 如果您的agencyItem具有String屬性Name ,則只需直接使用Name 如果agencyItem有一個具有String屬性Name的復雜屬性Agency ,那么您當前的綁定是正確的。

您也可以選擇在XAML中執行此操作。 然后,您必須創建一個屬性並實現INotifyPropertyChanged接口。

我還注意到你沒有使用像MVVM這樣的模式。 這也許值得一試!

您需要創建一個ListView ,然后在其SelectedItem屬性上 (如果您使用的是MVVM)或在ItemSelected事件或ItemTapped事件中創建您的詳細信息頁面(即: 導航到詳細信息頁面)。

你可以在這里找到樣品:

  1. ListView示例1
  2. ListView更多詳情
  3. 示例項目 - XamarinForms_Dynamic_ListView_Item
  4. 數據綁定
  5. Xamarin.Forms列表

暫無
暫無

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

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