UWP 将 IF 语句转换为导航视图项的 foreach 循环



我有当前的 IF 语句,因为缺乏更好的短语。"功能性":

protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (ColourSelections.TextColour != null)
{
TransfersItem.Foreground = ColourSelections.TextColour;
HomeItem.Foreground = ColourSelections.TextColour;
OverviewItem.Foreground = ColourSelections.TextColour;
SpendingItem.Foreground = ColourSelections.TextColour;
BillsItem.Foreground = ColourSelections.TextColour;
PayDatesItem.Foreground = ColourSelections.TextColour;
PeopleItem.Foreground = ColourSelections.TextColour;
// NavigationView header
NavView.Foreground = ColourSelections.TextColour;
// NavigationView Button Footer
ChangeUser.Foreground = ColourSelections.TextColour;
}
else
{
TransfersItem.Foreground = Application.Current.Resources["DefaultTextColour"] as SolidColorBrush;
HomeItem.Foreground = Application.Current.Resources["DefaultTextColour"] as SolidColorBrush;
OverviewItem.Foreground = Application.Current.Resources["DefaultTextColour"] as SolidColorBrush;
SpendingItem.Foreground = Application.Current.Resources["DefaultTextColour"] as SolidColorBrush;
BillsItem.Foreground = Application.Current.Resources["DefaultTextColour"] as SolidColorBrush;
PayDatesItem.Foreground = Application.Current.Resources["DefaultTextColour"] as SolidColorBrush;
PeopleItem.Foreground = Application.Current.Resources["DefaultTextColour"] as SolidColorBrush;
NavView.Foreground = Application.Current.Resources["DefaultTextColour"] as SolidColorBrush;
ChangeUser.Foreground = Application.Current.Resources["DefaultTextColour"] as SolidColorBrush;
}
}

我实质上是为 UWP 中的多个导航视图项声明多种颜色。

我试图将其转换为"foreach"或"for"语句,并逐步完成我的导航视图"导航视图"中的每个"导航视图项">

我目前有如下逻辑。这是错误的,但我希望逻辑能遇到:

foreach(NavigationViewItem navigationViewItem in NavView)
{
Foreground = ColourSelections.TextColour;
}

错误指出导航视图没有 GetEnumerator,我相信这意味着它无法"计算"有多少个导航视图项?

我通常得到以下格式的foreach循环的一般要点:

foreach(ARRAY as VALUE)
foreach(CLASSNAME varname in ARRAY)

对此的逻辑有什么想法吗?

您需要

NavView.MenuItems中签入

protected override void OnNavigatedTo(NavigationEventArgs e)
{
SolidColorBrush myColor = Application.Current.Resources["DefaultTextColour"] as SolidColorBrush;
if (ColourSelections.TextColour != null)
{
myColor = ColourSelections.TextColour;
}
foreach(var item in NavView.MenuItems)
{
if(item is NavigationViewItem)
{
item.Foreground = myColor;
}
}
}

最新更新