如何解决如何从XAML内的代码绑定数据
我上了这个课:
public partial class Calendar : ContentPage,INotifyPropertyChanged
{
public ICommand EventSelectedCommand => new Command(async (item) => await ExecuteEventSelectedCommand(item));
public ICommand DayTappedCommand => new Command<DateTime>(async (date) => await DayTapped(date));
public EventCollection Events { get; set; }
private void SetCalendar()
{
Events = new EventCollection
{
[DateTime.Now] = new List<EventModel>
{
new EventModel { Name = "Herrenabend,10:00 - 12:00 – 5000 Scanns",ID = 100},};
}
,我想将数据绑定到我的日历。 我尝试过:
<Grid Grid.Row="1" Grid.Column="1">
<controls:Calendar
x:Name="calender"
DayTappedCommand="{Binding DayTappedCommand}"
Events="{Binding Q2go.MainMenu_Partners.Calendar.Events}">
<controls:Calendar.EventTemplate>
<DataTemplate>
<StackLayout>
<Label
Text="{Binding Name}"
FontAttributes="Bold"
FontSize="Medium" >
<Label.GestureRecognizers>
<TapGestureRecognizer
Tapped="ClickOnLabel"
/>
</Label.GestureRecognizers>
</Label>
<Label
Grid.Row="1"
Text="{Binding ID}"
FontSize="8" >
<Label.GestureRecognizers>
<TapGestureRecognizer
Tapped="ClickOnLabel"
/>
</Label.GestureRecognizers>
</Label>
<StackLayout.GestureRecognizers>
<TapGestureRecognizer
Command="{Binding BindingContext.EventSelectedCommand,Source={x:Reference test}}"
CommandParameter="{Binding .}" />
</StackLayout.GestureRecognizers>
</StackLayout>
</DataTemplate>
</controls:Calendar.EventTemplate>
</controls:Calendar>
</Grid>
但是没有将数据提供到日历中,也没有发生任何事件。 缺少的链接在哪里?
我认为:Events="{Binding Q2go.MainMenu_Partners.Calendar.Events}">
我做的一切正确。但没有显示任何内容。为什么呢?
我知道,如果我只是将数据提供给日历内的代码(calender.events =事件),它就可以正常工作(仍然没有事件处理程序),但我希望它从代码中绑定数据。因此,如果没有这一行(calender.events =事件)。
我在每个示例中都读到了它应该起作用,但是对我来说不行。那么问题出在哪里呢?
解决方法
如果页面的BindingContext
设置为this
,则应仅使用Events="{Binding Events}"
作为绑定表达式
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。