xaml - 如何从 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 = events),它就可以正常工作(仍然没有事件处理程序),但我希望它从代码中绑定数据。所以没有这条线(calender.events = events)。
我在每个示例中都读到这应该有效,但它不适合我。那么问题出在哪里?
解决方案
如果您的页面BindingContext
设置为,this
那么您应该只使用Events="{Binding Events}"
Binding 表达式
推荐阅读
- python - 应用 minmaxscaler 后,列中的 Pandas 科学形式值给出错误的输出
- r - 如何通过第二个 col 中的最大值找到第一个 col 值(在矩阵中)
- python - 将文本字符串拆分为 int 和 text 变量
- sql-server - 在 Azure Functions 上使用 Microsoft 报表查看器
- javascript - 如何在 React 中将 connect() 和 withStyles() 用于类组件?
- php - 如何从 Codeigniter 中的返回结果运行多个查询
- scala - 如果我修改指向缓存 rdd 的变量会发生什么?
- laravel - Laravel 项目在共享主机上使用 bitbucket 管道
- docker - 在 Kubernetes pod 中使用 docker socket
- python - 错误:“make: * [Makefile:163: all] 错误 2”和“make: * [Makefile:163: all] 中断”