2017-01-31 23 views
1

我通過後面的代碼將對象列表傳遞給XAML。我得到的輸出是「X型號」,因爲它是一個對象。我如何從XAML中的該對象讀取特定數據?如何從ViewList中的對象讀取特定值?

<ListView ItemsSource="{Binding toBinding, Mode=TwoWay}"/> 

後面的代碼:

public List<MyObject> toBinding{ get; set; } 

    public constructor() { 
     //..passing a list of "MyObject" into passingObjectList; 
     toBinding = passingObjectList; 
    } 

MyObject containts:

public int Id { get; set; } 
public string Name { get; set; } 

我如何讀取例如NameId而不是在屏幕上顯示"X model"

+0

只要注意到你有WPF和Xamarin作爲標籤,他們的XAML是不一樣的,所以你應該只標記正確的。 – apineda

回答

0

您需要設置ListViewItemTemplate

例子來說明名稱:

<ListView ItemsSource="{Binding toBinding, Mode=TwoWay}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Label Text="{Binding Name}" FontAttributes="Bold" /> 
     <DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

See here爲一個完整的例子。

+0

我收到錯誤:'System.InvalidCastException:指定的轉換無效.'。任何想法? – ipid

0

編輯: Xamarin.Forms是不一樣的東西WPF ...試試這個,如果你正在開發一個應用程序Xamarin.Forms:

<ListView ItemsSource="{Binding toBinding}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <ViewCell> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="50" /> 
          <ColumnDefinition /> 
         </Grid.ColumnDefinitions> 
         <TextBlock Text="Id:" /> 
         <TextBlock Grid.Row="1" Text="Name:" /> 

         <Label Grid.Column="1" Text="{Binding Id}" /> 
         <Label Grid.Row="1" Grid.Column="1" Text="{Binding Name}" /> 
        </Grid> 
       </ViewCell> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

以下僅適用於WPF。

如果你想顯示要麼名稱或ID,你可以使用的DisplayMemberPath屬性:如果您想同時顯示你應該定義包含至少可以容納一個小組一個ItemTemplate

<ListView ItemsSource="{Binding toBinding}" DisplayMemberPath="Name"/> 

2周的TextBlocks(以及任何其他UI元素):

<ListView ItemsSource="{Binding toBinding}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="50" /> 
        <ColumnDefinition /> 
       </Grid.ColumnDefinitions> 
       <TextBlock Text="Id:" /> 
       <TextBlock Grid.Row="1" Text="Name:" /> 

       <TextBlock Grid.Column="1" Text="{Binding Id}" /> 
       <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Name}" /> 
      </Grid> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
+0

我收到錯誤:'Xamarin.Forms.Xaml.XamlParseException:位置16:52。無法分配屬性「DisplayMemberPath」:對於第一個代碼,屬性不存在,或者不可分配,或者值和屬性之間的類型不匹配。對於第二個代碼:'Xamarin.Forms.Xaml.XamlParseException:位置25:12。在xmlns http:// xamarin.com/schemas/2014/forms中找不到類型TextBlock。任何想法? – ipid

+0

Xamarin.Forms和WPF一樣...請正確標記您的問題。也請看我編輯的答案。 – mm8

0

做它如下:

<ListView ItemsSource="{Binding toBinding, Mode=TwoWay}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <ViewCell> 
       <Grid> 
        <Label Text="{Binding Name}" /> 
       </Grid> 
      </ViewCell> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

這應該做的工作

相關問題