该项目由WPF MVVMLight Framework组成。
对象是:创建一组工具栏,每个ToolBar也使用它的工具栏项目(为了清晰起见,按钮),在XAML中使用必要的“骨架”代码动态创建。
通过使用 HierarchicalDataTemplate 为它传播MenuItem,动态创建菜单的努力是成功的。
使用Menu,它只是创建每个Menu对象,其中包含一个MenuItem数组。
ToolBars的问题;但是,需要有一个数组的工具栏,其中包含另一个数组的项目......
public enum SiClopsExplorerToolbarType
{
#region file
[Description( "New Folder" )]
[TypeId( 1 )]
Folder ,
[Description( "New File" )]
[TypeId( 1 )]
File ,
.
.
#endregion // file
#region edit
[Description( "Cut" )]
[TypeId( 2 )]
Cut ,
[Description( "Copy" )]
[TypeId( 2 )]
Copy ,
[Description( "Paste" )]
[TypeId( 2 )]
Paste ,
#endregion // edit
#region view
[Description( "SI-CLOPS Explorer" )]
[TypeId( 3 )]
SiClopsExplorer ,
[Description( "Publication Data" )]
[TypeId( 3 )]
PublicationData ,
#endregion // view
}
...每个枚举的TypeId指示要创建哪个ToolBar,从而为以下内容创建按钮:TB 1(文件),TB 2(编辑),TB 3(视图),共有三个工具栏及其按钮。 / p>
public class ToolbarEntity
{
#region constructor
#endregion // constructor
public ToolbarEntity()
{
Toolbars = new List<ToolbarEntity>();
}
#region properties
public IList<ToolbarEntity> Toolbars { get; set; }
/// <summary>
/// The Description value of the MDI child-menu-type enumerated object is used as the display value for each menu item.
/// </summary>
public string Text { get; set; }
/// <summary>
/// An integer denoting the menu-level. Top level menus are zero. 1st sub-level menus are one, etc.
/// </summary>
public int MenuLevel { get; set; }
/// <summary>
/// Top Level menus are given a unique id so can delineate the start of the next top-level menu.
/// </summary>
public int MenuId { get; set; }
#endregion // properties
}
上面是一个简单的类,它将用作MVVM“模型”,在其中为View执行DataBinding。
对于View本身,需要类似以下内容:
<ToolBarTray DockPanel.Dock="Top">
<!-- Dynamically created or hardcoded in XAML... -->
<ToolBar >
<!-- Dynamically created ToolBar items... -->
<Button />
</ToolBar>
<!-- Dynamically created or hardcoded in XAML... -->
<ToolBar >
<!-- Dynamically created ToolBar items... -->
<Button />
</ToolBar>
</ToolBarTray>
ViewModel如何创建工具栏及其关联的ToolBar项目?
提前致谢
答案 0 :(得分:0)
结束使用XAML作为占位符的工具栏,然后使用所有项目的代码。