UWP Преобразование оператора IF в цикл foreach для NavigationViewItems - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть текущее утверждение 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;
            }
        }

Я, по сути, объявляю несколько цветов для нескольких NavigationViewItems в UWP.

Я пытаюсь преобразовать это в оператор «foreach» или «для» и пройти через каждый »NavigationViewItem "в моем NavigationView" NavView "

В настоящее время у меня была логика сделать это следующим образом.Это неправильно, но я надеюсь, что логика встречается:

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

В сообщении об ошибке говорится, что NavigationView не имеет GetEnumerator, что, как я считаю, означает, что он не может "посчитать", сколько существует NavigationViewItems?

Я получаю общий смысл циклов foreach, как правило, в следующем формате:

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

Есть какие-нибудь идеи по логике для этого?

1 Ответ

0 голосов
/ 16 сентября 2018

Вам необходимо зарегистрироваться 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;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...