Windows Phone 8:应用程序栏中的复选框
本文关键字:复选框 应用程序 Phone Windows | 更新日期: 2023-09-27 18:22:41
我有一个windows phone 8项目。这个应用程序包括新闻,我被应用程序栏的问题卡住了。我需要根据选中的类别过滤我的新闻。这些类别将在我的应用程序栏中。
用户将打开菜单,并根据自己的兴趣过滤新闻。但问题是,我无法将复选框放入应用程序栏中。
以下是我所做的;
<phone:PhoneApplicationPage.Resources>
<shell:ApplicationBar x:Name="ApplicationBarHaberler" IsVisible="True" IsMenuEnabled="True" ForegroundColor="SeaShell" BackgroundColor="DarkGreen">
<shell:ApplicationBarIconButton IconUri="Images/appbar_news.png" Text="Haberler"/>
<shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItem Text="Politics"/>
<shell:ApplicationBarMenuItem Text="Economy"/>
<shell:ApplicationBarMenuItem Text="Sport"/>
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.Resources>
我需要把复选框和勾选的东西,必须过滤新闻。有人能帮忙吗?
谢谢。。
平台根本不支持此功能。您可以根据情况将每行的Text
更改为"显示政治"/"隐藏政治",切换描述以显示用户选择该项目时会发生什么。
例如,PDF阅读器的ApplicationBar
上有一个项目,根据当前所处的模式,该项目会从"单页视图"更改为"连续视图"。
我建议有三种选择。如果您有四个或更少的过滤器,您可以将它们作为按钮添加到应用程序栏中。然后,您可以在单击按钮时更改按钮的图像和文本,以指示用户是否会获得这些提要。
示例1
<phone:PhoneApplicationPage.Resources>
<shell:ApplicationBar x:Name="ApplicationBarHaberler" IsVisible="True" IsMenuEnabled="True" ForegroundColor="SeaShell" BackgroundColor="DarkGreen">
<shell:ApplicationBarIconButton IconUri="Images/appbar_NoPolitics.png" Text="Politics" Click="OnPoliticsClicked"/>
<shell:ApplicationBarIconButton IconUri="Images/appbar_NoEconomy.png" Text="Economy" Click="OnEconomyClicked"/>
<shell:ApplicationBarIconButton IconUri="Images/appbar_NoSport.png" Text="Sport" Click="OnSportClicked"/>
private const int SportsButtonIndex = 2;
private void OnSportClicked(object sender, EventArgs e)
{
ViewModel.FilteringSports = !ViewModel.FilteringSports;
if(ViewModel.FilteringSports)
{
(ApplicationBar.Buttons[SportsButtonIndex] as ApplicationBarIconButton).IconUri = new Uri("Images/appbar_FilterSports", UriKind.Relative);
}
else
{
(ApplicationBar.Buttons[SportsButtonIndex] as ApplicationBarIconButton).IconUri = new Uri("Images/appbar_NoSports", UriKind.Relative);
}
}
第二个想法是Mike Dimmick建议的,并更改MenuItems的文本以指示您是否正在筛选。点击事件看起来与上面类似。
第三个(也是我最喜欢的)是有一个过滤器页面。你会有一个"过滤器"图标按钮,点击后会导航到一个包含所有过滤器的FilterPage。这也为您提供了稍后添加更多过滤器的优势。当你导航回页面时,你会过滤提要。
Exmaple 3
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if ((e.NavigationMode == NavigationMode.Back) && ChangingFilter)
{
Filter();
ChangingFilter = false;
}
}
private void OnFilterButtonClick(object sender, EventArgs eventArgs)
{
ChangingFilter = true;
NavigationService.Navigate(new Uri("/FilterPage.xaml", UriKind.Relative));
}
FilterPage会用一个复选框列出所有过滤器,以指示用户是否想要查看它们。