0

このプロジェクトは、WPF MVVMLight フレームワークを使用して構成されています。

オブジェクトの目的: XAML で必要な「スケルトン」コードのみを使用して、動的に作成された ToolBar 項目 (わかりやすくするためのボタン) を持つ各 ToolBar を持つ一連の ToolBars を作成します。

Menus を動的に作成する試みは、HierarchicalDataTemplateを使用して MenuItems を伝達することで成功しました。

Menu では、MenuItems の配列を内部に持つ各 Menu オブジェクトを作成するだけでした。

ツールバーの問題。ただし、その中に別のアイテムの配列を持つツールバーの配列が必要です...

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 (表示) の合計 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
}

上記は、ビューに対して DataBinding を実行するための MVVM "モデル" として使用される単純なクラスです。

ビュー自体には、次のようなものが必要です。

 <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 に答える