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