Xamarin.Forms регистрирует изменения привязанных данных

Nimral спросил: 03 февраля 2018 в 11:34 в: data-binding

Для тестирования и обучения я создал приложение Xamarin.forms, содержащее список, привязанный к базе данных SQlite. Xaml выглядит следующим образом:

        <ListView>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout>
                            <Label Text="{Binding name}" />
                            <Switch IsToggled="{Binding switchState}" />
                         </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

Codebehind привязывает ListView.ItemsSource к списку элементов, заполненных Database.GetItemsAsync ().

Модель просто:

public class Item
{
    [PrimaryKey, AutoIncrement]
    public int id { get; set; }
    public string name { get; set; }
    public bool switchState { get; set; }
}

Я хочу записывать временную метку в другую таблицу каждый раз, когда пользователь меняет переключатель. Как я могу подключиться к привязке, чтобы выполнить это?

Pitfall # 1: столбец switchState также может быть записан другими компонентами бизнес-логики. Но в этом случае я не хочу, чтобы эти изменения регистрировались. Вот почему я не могу использовать простую процедуру установки в модели, так как это всегда регистрировалось.

Pitfall # 2: Благодаря привязке к базе данных любое изменение базы данных также распространяется на представление, верно ?. Как и в # 1, изменения, появляющиеся в представлении из-за изменений в базовой базе данных, не регистрируются.

Как это сделать?


0 ответов