我有一个带有NavigationView的UWP应用程序。我一直在参考这个文档,除了更深入地使用AutoSuggestBox之外,它还包含所有内容的工作示例。 https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/navigationview
我想要尝试的是在QuerySubmitted上更新MainPage NavigationView的ContentFrame,我尝试使用ContentFrame.Navigate执行此操作,但是,这最终会导致ContentFrame完全空白。我很困惑,因为没有太多关于AutoSuggestBox的相关内容。
我目前的代码如下:
private async void AutoSuggestBox_QuerySubmittedAsync(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)
{
searchResultsClass.searchQuery = suggestBox.Text;
Debug.WriteLine(searchResultsClass.searchQuery);
await searchResultsClass.SearchAsync();
this.ContentFrame.Navigate(typeof(SearchResults));
}
SearchResults.xaml,与我的其他工作视图相同:
<Page
x:Class="TestApp.Views.SearchResults"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TestApp.Views"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<GridViewHeaderItem Content="Search results for ''" FontSize="36"/>
</Grid>
</Page>
答案 0 :(得分:0)
无法重现您的问题。 ContentFrame.Navigate
可以很好地处理QuerySubmitted
事件句柄。 XAML中的AutoSuggestBox
如下:
<NavigationView.AutoSuggestBox>
<AutoSuggestBox x:Name="ASB" QueryIcon="Find" QuerySubmitted="ASB_QuerySubmitted"/>
</NavigationView.AutoSuggestBox>
结果:
因此,请在this.ContentFrame.Navigate(typeof(SearchResults));
代码行添加一个断点,并调试项目以检查它是否可以成功完成此步骤。
如果您仍有问题,请上传最小的转载项目。
<强>更新强>
为了测试你的项目,问题是SearchResults
页面缺少构造函数方法。例如:
public SearchResults()
{
this.InitializeComponent();
}
public async Task SearchAsync()
{
...
}
默认情况下,每个导航都会创建所请求的特定页面(或子类)的新实例,并处理上一页面实例。详情请参阅Page
课程。因此,在代码段中的SearchResults
中创建实例MainPage
可能毫无意义,并且不会对显示的导航SearchResults
页面产生影响。
如果您想将AutoSuggestBox
的文字传递到另一个页面,则应通过导航方法 Pass information between pages 。