如何解决如何在代码中传递对象并将其绑定到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 举报,一经查实,本站将立刻删除。