0

该项目是使用 WPF MVVMLight 框架组成的。

对象是:创建一组工具栏,每个工具栏还具有动态创建的工具栏项目(为了清晰起见的按钮),仅使用 XAML 中必要的“骨架”代码。

通过使用HierarchicalDataTemplate为其传播 MenuItems,动态创建菜单的努力是成功的。

对于 Menu,它只是创建每个 Menu 对象,其中包含一个 MenuItems 数组。

工具栏的问题;但是,是否需要一个ToolBars数组,其中包含另一个Items 数组......

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 指示要创建哪个工具栏,从而为以下三个工具栏及其按钮创建按钮:TB 1(文件)、TB 2(编辑)、TB 3(视图)。

 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“模型”,在其中对视图执行 DataBinding。

对于视图本身,需要类似以下内容:

 <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 将如何创建工具栏及其关联的工具栏项?

提前致谢

4

1 回答 1

0

最终只使用 XAML 作为工具栏的占位符,然后对所有项目使用代码。

于 2014-03-23T18:37:09.813 回答