如何从ViewList中的对象读取特定值?

时间:2017-01-31 15:37:02

标签: c# wpf xaml xamarin

我通过代码将对象列表传递给XAML。我得到的输出是" X模型"因为它是一个对象。如何在XAML中读取该对象的特定数据?

<ListView ItemsSource="{Binding toBinding, Mode=TwoWay}"/>
代码背后的代码:

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

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

MyObject含有:

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

我如何阅读,例如NameId在屏幕上显示"X model"

3 个答案:

答案 0 :(得分:0)

您需要设置ListView的{​​{1}}:

显示名称的示例:

ItemTemplate

See here获取完整示例。

答案 1 :(得分: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属性:

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

如果要显示两者,则应定义一个ItemTemplate,其中包含一个可以容纳至少两个TextBlocks(以及任何其他UIElements)的Panel:

<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>

答案 2 :(得分:0)

按以下步骤操作:

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

这应该做的工作