【问题标题】:Dynamic list of hamburger menu buttons汉堡菜单按钮的动态列表
【发布时间】:2016-03-10 00:28:14
【问题描述】:

我想从项目的动态列表中创建HamburgerMenu,最好我想将带有模板的ListBox 之类的东西绑定到我的视图模型上的列表中,并让菜单项动态显示。 (参见:http://bit.ly/1Lac78E)。

尝试向PrimaryButtons(或者可能是SecondaryButtons)集合添加HamburgerButtonInfo 以外的任何内容会导致错误。大概是因为这些集合被声明为:

PrimaryButtons = new ObservableItemCollection<HamburgerButtonInfo>(); 
SecondaryButtons = new ObservableItemCollection<HamburgerButtonInfo>(); 

那么是否可以使用 Template10 汉堡菜单来执行此操作,而无需像以下问题中那样使用代码隐藏:UWP Template 10 create a dynamic hamburgermenu

更新

为了澄清,我正在尝试创建一个导航菜单(使用汉堡菜单模板),类似于邮件和日历应用程序,其中有文件夹和文件夹中的项目的动态列表。

【问题讨论】:

  • @MirkoBellabarba 是的,template10 是“本机”MVVM。
  • 是的,我知道,但这不是强制性的。您是否尝试将主按钮绑定到您的 ViewModel 中声明的 HamburgerButtonInfo 的列表/ObservableCollection?
  • 这是一个有趣的想法,但缺点是我必须手动(通过代码)创建按钮,而不是能够使用数据模板,对吧?

标签: c# winrt-xaml win-universal-app template10


【解决方案1】:

首先,我不确定这是否非常聪明。

但你可以这样做。

public class MainPage:Page
{
    private void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        ViewModel.PrimaryButtons = Views.Shell.HamburgerMenu.PrimaryButtons;
        ViewModel.SecondaryButtons = Views.Shell.HamburgerMenu.SecondaryButtons;
    }
}

public class MainPageViewModel
{
    Windows.Foundation.Collections.IObservableVector<ICommandBarElement> PrimaryButtons { get; set; }
    Windows.Foundation.Collections.IObservableVector<ICommandBarElement> SecondaryButtons { get; set; }
}

祝你好运, 杰瑞

【讨论】:

  • 为什么说它不太聪明?
  • 我为 uwp 做了一个动态 appbar,但我现在没有时间分享我今晚尝试做的代码
  • 所以这会导致编译器错误`无法将类型'System.Collections.ObjectModel.ObservableCollection'隐式转换为'System.Collections.ObjectModel.ObservableCollection'。尝试转换它,只是给我一个不同的编译器错误,告诉我它不可转换。
  • @RicardoPons 需要明确的是,我想将项目添加到右侧的汉堡包(导航菜单),而不是应用栏。本质上,我想创建类似于邮件和日历应用程序的东西,其中汉堡菜单中的项目是一组文件夹和文件夹中的项目。根据用户(例如在邮件和日历中),文件夹的数量和名称会有所不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
  • 2016-05-15
  • 2018-08-16
相关资源
最近更新 更多