C# 取消更改Xamarin表单中的条目

C# 取消更改Xamarin表单中的条目,c#,xaml,xamarin,xamarin.forms,textchanged,C#,Xaml,Xamarin,Xamarin.forms,Textchanged,如何取消或删除条目值的更改 有很多可能性 如果输入了意外字符,可以使用TextChanged事件回滚值(或空条目或其他内容) Completed当用户按ENTER键(或ok或return on mobile)时,您可以使用该项完成所有操作 同样,未聚焦也可以以同样的方式提供帮助 根据您希望与用户交互的方式,您可以实现以下三种方式之一 下面是一个使用TextChanged的示例,我希望用户最多写入20个字符,当字符超过20个时,我回滚到预览值 bool IsEditing = false; pr

如何取消或删除条目值的更改


有很多可能性

如果输入了意外字符,可以使用
TextChanged
事件回滚值(或空条目或其他内容)

Completed
当用户按ENTER键(或ok或return on mobile)时,您可以使用该项完成所有操作

同样,
未聚焦
也可以以同样的方式提供帮助

根据您希望与用户交互的方式,您可以实现以下三种方式之一

下面是一个使用
TextChanged
的示例,我希望用户最多写入20个字符,当字符超过20个时,我回滚到预览值

bool IsEditing = false;
private void OnEntryTextChanged(object sender, TextChangedEventArgs e)
{
    var entry = (Entry)sender;
    if (IsEditing || string.IsNullOrEmpty(entry.Text))
        return;
    IsEditing = true;
    if (entry.Text.Length > 20)
    {
        entry.Text = e.OldTextValue;
    }
    IsEditing = false;
}

您可以绑定条目文本并在视图模型中创建该属性,然后:

  • 将该条目的默认值指定为数据库存储值
  • 在“保存”按钮上,单击“使用条目的当前值更新数据库存储值”(即绑定文本)
    所以,无论何时再次导航到该页面,它都会将条目值显示为数据库中最后存储的值,请确保使用INotifyPropertychanged更新值

  • 你的问题没有足够的细节给你一个确切的答案。但这是你可以处理它的方式

  • 如果您是从代码后面执行逻辑,那么它非常简单。内容页有一个正在消失的事件。您可以重写此方法,并将模型设置为null

     protected override void OnDisappearing ()
     {
       base.OnDisappearing ();
       mobileUser = null
     }
    
  • 如果您使用的是MVVM模式,并且您从ViewModel或其他地方执行逻辑,那么事情可能会更复杂一些。这就是MVVM框架派上用场的地方,大多数框架都公开了这些事件,您可以从ViewModels调用它们,也可以通过向ContentPage添加行为并添加命令来自己完成

  • 请解释或说明你试图解决的问题。目前还不清楚你在问什么。我有一个表单,其中包含一组条目和一个按钮。条目的问题是,您可以更改其值即使您导航到另一个页面并返回,该值仍然存在键入的值仍然存在,我想做的是,如果用户更改条目的值并导航到另一个页面而不单击按钮,然后返回该页面,该页面删除用户键入的值并加载旧值,如果用户在为条目键入新值后单击按钮,则该页面会将用户键入的值保存在数据库中。@AichaMaghrebi您可以通过显示当前的代码来更新原始帖子吗?