このプロジェクトは、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 によってどのように作成されますか?
前もって感謝します