如何打开带有通讯录之类结果的页面?
How to open page with result like contactbook?
在我的 UWP-App 中,我想创建一个应用内部联系簿页面。我可以 select 联系人和 return select 编辑的联系人回到我打开通讯录的页面。
在我来自的 Android 中有一个名为 "startActivityForResult" 的函数,它打开一个 activity 并在完成时获得 return 值。
我想创建相同的行为。
我使用 Frame.Navigate(typeof(ContactBook))
完成了此操作,然后当联系人被 selected 时,我使用 Frame.Navigate(typeof(PreviousPage), selectedContact)
返回
方法Frame.GoBack()
在这种情况下没有用,因为我不能传递参数。
我该如何解决这个问题?
我不是 100% 熟悉 android 和 "startActivityForResult",但您是否希望浏览整个框架? UWP 应用程序中没有任何等效项,WPF 的 showDialog() 甚至也没有,这可能正是您正在寻找的。
您只有几个选项,其中 none 每个人实际上 "amazing"。
您可以执行上述操作,即导航至包含所有联系人的页面,然后导航至新页面,但根据您应用的布局方式,您可能会丢失页面(因为它是一个新实例而不是堆栈中的后部,所以你不能真正缓存它)。您也无法导航到页面的实例,它只能导航到新页面或从后/向前通过堆栈。如果您使用 GoBack 并缓存页面(使用 "required" 模式进行缓存),那么您可以对静态 class 中的存储值进行一些肮脏的查找(我知道,丑陋而不是 MVVM)或设置本地设置值并在之前的页面的 OnNavigatedTo() 方法中读取该值。
如果您不需要使用框架移动,您可以使用弹出窗口或自定义弹出窗口用户控件构建各种弹出窗口,显示页面 XAML 而不是页面框架.这将在调整大小方面遇到一些困难(对于 W10 比 W10M 更是如此)等等,但您将无法过渡到框架本身之外。然后您可以看到所选的值,然后在提交事件上,您可以直接使用该页面,因为它已经打开。
如果需要,您可以为弹出窗口构建一个自定义用户控件,并放置一些可以绑定到 MVVM 的自定义依赖属性,这实际上完全取决于您在做什么以及如何做。
如此简短的回答,没有快速的方法来实现您正在寻找的东西,这似乎是 API 的一个问题。我会在 API 的 uservoice (https://wpdev.uservoice.com/forums/110705-universal-windows-platform) 上提出建议,并尝试获得支持!
There isn't any equivalent in UWP apps, nor is there even really one for WPF's showDialog(), which is probably what you're looking for.
@Daniel,不,UWP 应用程序中有一个等效项。请参考Launch an app for results,您可以按照该文档中的教程来实现。
为此,您需要创建两个应用程序。一个是将启动结果应用程序的应用程序(比如说 "main app"),另一个应用程序应该是通讯录应用程序。通讯录应用程序的行为类似于模态 window,主应用程序将等待通讯录应用程序的结果。
但在 UWP 应用程序中,您可以使用 ContactStore class 访问包含联系人的数据库。
因此,您需要重新考虑是否有必要自行创建联系人应用程序。
编辑:
我可能误解了你的问题,你只是想让你的页面表现得像通讯录,而不是想自己创建一个通讯录。但无论如何,都是一样的,您可以创建另一个应用程序来保存您要从主应用程序启动的页面。
在我的 UWP-App 中,我想创建一个应用内部联系簿页面。我可以 select 联系人和 return select 编辑的联系人回到我打开通讯录的页面。
在我来自的 Android 中有一个名为 "startActivityForResult" 的函数,它打开一个 activity 并在完成时获得 return 值。
我想创建相同的行为。
我使用 Frame.Navigate(typeof(ContactBook))
完成了此操作,然后当联系人被 selected 时,我使用 Frame.Navigate(typeof(PreviousPage), selectedContact)
方法Frame.GoBack()
在这种情况下没有用,因为我不能传递参数。
我该如何解决这个问题?
我不是 100% 熟悉 android 和 "startActivityForResult",但您是否希望浏览整个框架? UWP 应用程序中没有任何等效项,WPF 的 showDialog() 甚至也没有,这可能正是您正在寻找的。
您只有几个选项,其中 none 每个人实际上 "amazing"。
您可以执行上述操作,即导航至包含所有联系人的页面,然后导航至新页面,但根据您应用的布局方式,您可能会丢失页面(因为它是一个新实例而不是堆栈中的后部,所以你不能真正缓存它)。您也无法导航到页面的实例,它只能导航到新页面或从后/向前通过堆栈。如果您使用 GoBack 并缓存页面(使用 "required" 模式进行缓存),那么您可以对静态 class 中的存储值进行一些肮脏的查找(我知道,丑陋而不是 MVVM)或设置本地设置值并在之前的页面的 OnNavigatedTo() 方法中读取该值。
如果您不需要使用框架移动,您可以使用弹出窗口或自定义弹出窗口用户控件构建各种弹出窗口,显示页面 XAML 而不是页面框架.这将在调整大小方面遇到一些困难(对于 W10 比 W10M 更是如此)等等,但您将无法过渡到框架本身之外。然后您可以看到所选的值,然后在提交事件上,您可以直接使用该页面,因为它已经打开。
如果需要,您可以为弹出窗口构建一个自定义用户控件,并放置一些可以绑定到 MVVM 的自定义依赖属性,这实际上完全取决于您在做什么以及如何做。
如此简短的回答,没有快速的方法来实现您正在寻找的东西,这似乎是 API 的一个问题。我会在 API 的 uservoice (https://wpdev.uservoice.com/forums/110705-universal-windows-platform) 上提出建议,并尝试获得支持!
There isn't any equivalent in UWP apps, nor is there even really one for WPF's showDialog(), which is probably what you're looking for.
@Daniel,不,UWP 应用程序中有一个等效项。请参考Launch an app for results,您可以按照该文档中的教程来实现。
为此,您需要创建两个应用程序。一个是将启动结果应用程序的应用程序(比如说 "main app"),另一个应用程序应该是通讯录应用程序。通讯录应用程序的行为类似于模态 window,主应用程序将等待通讯录应用程序的结果。
但在 UWP 应用程序中,您可以使用 ContactStore class 访问包含联系人的数据库。
因此,您需要重新考虑是否有必要自行创建联系人应用程序。
编辑: 我可能误解了你的问题,你只是想让你的页面表现得像通讯录,而不是想自己创建一个通讯录。但无论如何,都是一样的,您可以创建另一个应用程序来保存您要从主应用程序启动的页面。