【发布时间】:2018-08-07 19:10:14
【问题描述】:
为了测试和学习,我创建了一个 Xamarin.forms 应用程序,其中包含一个绑定到 SQlite 数据库的列表视图。 xml是这样的:
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<Label Text="{Binding name}" />
<Switch IsToggled="{Binding switchState}" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
代码隐藏将 ListView.ItemsSource 绑定到由 Database.GetItemsAsync() 填充的项目列表。
模型很简单:
public class Item
{
[PrimaryKey, AutoIncrement]
public int id { get; set; }
public string name { get; set; }
public bool switchState { get; set; }
}
我想在用户每次更改开关时将时间戳记录到不同的表中。我怎样才能挂钩到绑定来完成这个?
陷阱#1:switchState 列也可以被业务逻辑的其他部分写入。但在这种情况下,我不希望记录这些更改。这就是为什么我不能在模型中使用简单的设置例程,因为这总是会记录。
陷阱#2:通过数据库绑定,对底层数据库的任何更改也会传播到视图,对吧?与 #1 一样,不会记录由于底层数据库更改而出现在视图中的更改。
我该如何做到这一点?
【问题讨论】:
标签: data-binding xamarin.forms event-handling