Первая часть моего вопроса
Я создаю приложение 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.
Любая помощь очень ценится !!!
Спасибо!