我有一个弹出页面,我想从中返回一个值。所以在它的 c# 文件中,我的代码如下所示:
public partial class SelectDb : PopupPage
{
TaskCompletionSource<string> taskCompSrc;
public Task<string> PopupDismissed => taskCompSrc.Task;
public string RetVal { get; set; }
public SelectDb(List<string> lst)
{
InitializeComponent();
}
protected override void OnAppearing()
{
base.OnAppearing();
taskCompSrc = new TaskCompletionSource<string>();
}
protected override void OnDisappearing()
{
base.OnDisappearing();
taskCompSrc.SetResult(RetVal);
}
在弹出屏幕的视图代码中,我有可以从视图模型调用命令的代码,如下所示:
<Button Text="Select"
WidthRequest="100"
TextColor="White"
Command="{Binding SetConnCommand}"/>
在 SetConn 方法中处理完成并关闭弹出屏幕。
那么是否有可能以某种方式将 RetVal 变量数据绑定到调用 SetConn 的视图模型,以便可以在弹出窗口关闭之前正确设置 RetVal?
是的,通过将 RetVal 设置为 BindableProperty 并设置适当的绑定,您可以将其绑定到 ViewModel 的属性并在弹出窗口关闭之前正确设置它。
注意:确保您的 ViewModel 实现 INotifyPropertyChanged 以支持数据绑定,并且 RetVal 属性具有带有适当通知的 get 和 set 访问器。