Каков хороший подход для хранения и добавления различных элементов управления xaml в приложение UWP (в частности, NavigationView) - PullRequest
0 голосов
/ 25 сентября 2018

Первая часть моего вопроса

Я создаю приложение UWP, которое использует класс NavigationView, и мне нужна небольшая помощь в построении хорошего подхода к тому, как мне управлять созданием элементов управления вкод позади (не на языке разметки).

Я решил вместо добавления элементов управления на языке разметки xaml создать список элементов управления в C # и добавить эти элементы управления как часть моего метода NavView_Loaded.

Я понимаю, что есть простота работы с xaml для создания пользовательского интерфейса.Тем не менее, я намереваюсь иметь различные обстоятельства, при которых элементы управления видны или свернуты, и мне легче поддерживать состояние элементов управления, работая в коде позади или в C #, используя мой класс главной страницы.

В настоящее время у меня естьчто-то вроде следующего

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
    }

    public ObservableCollection<NavigationViewItem> SetNavViewItems()
    {
        var navitems = new ObservableCollection<NavigationViewItem>
        {
            new NavigationViewItem()
            {
                Content = "Home",
                Icon = new SymbolIcon(Symbol.Home),
                Tag = "home",
                Visibility = Visibility.Visible,
            },
            new NavigationViewItem()
            {
                Content = "Documents",
                Icon = new SymbolIcon(Symbol.Document),
                Tag = "documents",
                Visibility = Visibility.Visible,
            },
            new NavigationViewItem()
            {
                Content = "Library",
                Icon = new SymbolIcon(Symbol.Library),
                Tag = "library",
                Visibility = Visibility.Visible,
            }
        };
        return navitemsHome;
    }

    private void NavView_Loaded(object sender, RoutedEventArgs e)
    {
        navitems = SetNavViewItems();

        foreach (var navitem in navitems)
        {
            NavView.MenuItems.Add(navitem);
        }
    }
}

Как я понимаю, в этом примере я использовал строго типизированную коллекцию, чтобы содержать коллекцию NavigationViewItem.Моя проблема заключается в том, что я хочу создать коллекцию, список или массив различных типов элементов управления (например, NavigationViewItemHeader, NavigationViewItem, NavigationViewList, NavigationViewItemSeparator) .... и я не уверен, что является наиболее подходящим;список, коллекция (слабо набранный), массив или, если есть лучший вариант.

Чтобы завершить мое объяснение.

У меня тогда есть отдельный список (из строк), который содержитвсе теги элементов навигации, которые я использую для проверки условий и установки, видим ли соответствующий элемент управления.

Вторая часть моего вопроса

Еще один элемент управления пользовательского интерфейсаЯ борюсь с тем, что может или не может быть полностью реализовано как часть класса NavigationView, расширяет Предмет или Заголовок для отображения списка подпунктов.Насколько я понимаю, NavigationViewItem является наиболее подходящим элементом управления для использования в качестве основного заголовка / элемента.Подпункты должны использовать NavigationViewList.Затем я могу написать метод для настройки видимости элементов управления NavigationViewList, который срабатывает, когда пользователь нажимает на соответствующий NavigationViewItem.

Третья и последняя часть

Всякий раз, когда ясоздать элемент управления в моем NavigationView (то есть панели стека), кажется, что он автоматически создает NavigationViewItem с панелью стека содержимого, который имеет стиль по умолчанию (то есть высоту).Я ожидаю, что это предназначено, и любой элемент управления, созданный в NavigationView, унаследован от NavigationViewBase.К сожалению, мне кажется, что мне сложно отображать несколько строк панели стека или сетки, которая унаследована от NavigationViewBase.Кто-нибудь может пролить свет?Это в моем воображении или есть что-то важное, что нужно понять при создании элемента управления в классе NavigationView.

Любая помощь очень ценится !!!

Спасибо!

...