Xamarin.forms 编辑后弹出RG插件,不更新属性

Xamarin.forms 编辑后弹出RG插件,不更新属性,xamarin.forms,Xamarin.forms,我正在列表中显示我的属性。我曾经使用Acr.UserDialogs来显示弹出窗口,但是我决定切换到RG以获得更好的UI 现在,当我在一个字段上计时并在返回原始页面时对其进行编辑时,该值与更新前保持不变。我试图添加刷新拉,但没有帮助 我的页面背面 public DisplayResult(RemoteCallResult<IEnumerable<DocumentData>> data) { InitializeComponent(

我正在列表中显示我的属性。我曾经使用Acr.UserDialogs来显示弹出窗口,但是我决定切换到RG以获得更好的UI

现在,当我在一个字段上计时并在返回原始页面时对其进行编辑时,该值与更新前保持不变。我试图添加刷新拉,但没有帮助

我的页面背面

  public DisplayResult(RemoteCallResult<IEnumerable<DocumentData>> data)
        {
            InitializeComponent();
            BindingContext = _resultPageViewModel = new ResultPageViewModel(data);
        }
弹出

  <Entry x:Name="entryCardName"
                    FontSize="Small"
                    Placeholder="{Binding FieldValue}"
                    Text="{Binding FieldValue}"
                    TextColor="Black"
                    ReturnType="Next">
                </Entry>

这是更新私有内部字段,绕过setter和
NotifyPropertyChanged

public async Task UpdateValue(string value)
{
    _fieldValue = value;
}
public async Task UpdateValue(string value)
{
    FieldValue = value;
}
您想更新将触发setter和NotifyPropertyChanged的公共属性

public async Task UpdateValue(string value)
{
    _fieldValue = value;
}
public async Task UpdateValue(string value)
{
    FieldValue = value;
}

在显示弹出窗口时,我认为还应该将ViewModel传递给PoupPage:

  public async Task EditTextAsync(DocumentData param)
        {
            await Navigation.PushPopupAsync(new EditPopUp(param), this);
        }
然后在弹出窗口中,您不需要创建新的:

public MainPage(DocumentData param, ResultPageViewModel model)
{
    _fieldValue = param.FieldValue;
    Command ConfirmPopUpCommand = new Command(async () => await ExecuteConfirmPopUpCommand(model));

}

private async Task ExecuteConfirmPopUpCommand(ResultPageViewModel model)
{

    await model.UpdateValue(_fieldValue);
    await PopupNavigation.Instance.PopAsync(true);
}

为什么EditPopUpViewModel创建自己的ResultPageViewModel实例?这样我就可以调用update方法了。我应该换一种方式吗?您的另一个页面已经有此VM的实例。创建新实例并调用Update没有任何作用,因为新实例未连接到您的其他页面。@Rntakokoi在两个页面中使用相同的ResultPageViewModel实例。很抱歉,我不知道如何在两个页面中使用相同的实例。。创建静态?嗨,这不起作用,对不起。仍然不更新结果页上的值请尝试使用我更新的代码,传递模型通过命令。@Jack Hua-MSFT仍然不更新整个页面。我可以在方法中看到数据,但是我已经在按钮上添加了更新方法,并在结果页面上执行该方法,并且在这里公共异步任务UpdateValue(字符串值){u fieldValue=value;}将_fieldValue更改为fieldValue。
public MainPage(DocumentData param, ResultPageViewModel model)
{
    _fieldValue = param.FieldValue;
    Command ConfirmPopUpCommand = new Command(async () => await ExecuteConfirmPopUpCommand(model));

}

private async Task ExecuteConfirmPopUpCommand(ResultPageViewModel model)
{

    await model.UpdateValue(_fieldValue);
    await PopupNavigation.Instance.PopAsync(true);
}