微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在代码中传递对象并将其绑定到XAML页面?

如何解决如何在代码中传递对象并将其绑定到XAML页面?

在Listview中点击该项目时,我得到了对象。

async private void ListView_ItemTapped(object sender,ItemTappedEventArgs e)
        {
            var vm = BindingContext as Meetingviewmodel;
            var meeting = e.Item as MeetingPOCO;
            await Navigation.PushAsync(new Attendees_Page(meeting));
        }

在下一个页面中,创建对象

public partial class Attendees_Page : ContentPage
    {
        private MeetingPOCO thismeeting;
        public MeetingPOCO Thismeeting
        {
            get { return thismeeting; }
            set
            {
                thismeeting = value;
            }
        }
        public Attendees_Page(MeetingPOCO meeting)
        {
            InitializeComponent();
            Thismeeting = meeting;
        }

在XAML中,我绑定到对象:

<ListView x:Name="MeetingLV"
            Margin="05,0" 
            ItemsSource="{Binding Thismeeting}"    
            HasUnevenRows="True"
            SeparatorVisibility="None"
            >
<ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Grid>
                            <Grid.ColumnDeFinitions>
                                <ColumnDeFinition Width="Auto"/>
                                <ColumnDeFinition Width="Auto"/>
                                <ColumnDeFinition Width="Auto"/>
                               
                                <ColumnDeFinition Width="Auto"/>
                            </Grid.ColumnDeFinitions>

                            <StackLayout Orientation="Horizontal">
                                <Label Text="{Binding MeetingDate,StringFormat='{0:MM/ dd/ yyyy}'}"
                                       Style="{StaticResource MyLabels}"
                                   Grid.Column="0"/>

结果是空白页。如何传递“会议”对象并将其绑定到另一个页面

解决方法

首先,您无法将模型绑定到ListView的ItemSource:

使用ItemsSource属性在ListView中填充数据, 可以接受任何实现 IEnumerable 的集合。

我写了一个简单的示例来展示如何设置ItemsSource

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();

        //ThisMeeting = meeting;

        ThisMeeting = new MeetingPOCO() { MeetingDate = "123"};

        ObservableCollection<MeetingPOCO> dataSource = new ObservableCollection<MeetingPOCO>();

        dataSource.Add(ThisMeeting);

        MeetingLV.ItemsSource = dataSource;
    }

    private MeetingPOCO thisMeeting;
    public MeetingPOCO ThisMeeting
    {
        get { return thisMeeting; }
        set
        {
            thisMeeting = value;
        }
    }
}

public class MeetingPOCO
{
    public string MeetingDate { get; set; }
}

您要使用绑定,应该是这样的:

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();

        //ThisMeeting = meeting;

        ThisMeeting = new MeetingPOCO() { MeetingDate = "123"};

        MeetingPOCO pocp = new MeetingPOCO();
        pocp.dataSource.Add(ThisMeeting);
        BindingContext = pocp;
    }

    public MeetingPOCO ThisMeeting { get; set; }
}

public class MeetingPOCO
{
    public ObservableCollection<MeetingPOCO> dataSource { get;set;}

    public string MeetingDate { get; set; }

    public MeetingPOCO()
    {
        dataSource = new ObservableCollection<MeetingPOCO>();
    }
}

在Xaml中,绑定到dataSource

<ListView x:Name="MeetingLV"
        Margin="05,0" 
        ItemsSource="{Binding dataSource}"    
        HasUnevenRows="True"
        SeparatorVisibility="None"
        >
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Label Text="{Binding MeetingDate}"/>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

您可以阅读document并在其中找到有关绑定的示例。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。