<Menu x:Name="menuTop"
ItemsSource="{Binding Path=QueryEditorMenu}">
<Menu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header"
Value="{Binding Title}"></Setter>
<Setter Property="Command"
Value="{Binding Command}"></Setter>
<Setter Property="CommandParameter"
Value="{Binding NameSpace}"></Setter>
<Setter Property="Tag"
Value="{Binding Tag}"></Setter>
<Setter Property="ItemsSource"
Value="{Binding SubItems}"></Setter>
<Setter Property="InputGestureText"
Value="{Binding ShortcutKey}" />
</Style>
</Menu.ItemContainerStyle>
</Menu>
public class MenuBar:BindableBase
{
private string _icon;
public string Icon
{
get { return _icon; }
set
{
SetProperty(ref _icon, value);
}
}
private string _tag;
public string Tag
{
get { return _tag; }
set
{
SetProperty(ref _tag, value);
}
}
private string title;
/// <summary>
/// 菜单标题
/// </summary>
public string Title
{
get { return title; }
set { title = value; }
}
private string shortcutKey;
/// <summary>
/// 菜单快捷键
/// </summary>
public string ShortcutKey
{
get { return shortcutKey; }
set { shortcutKey = value; }
}
private string nameSpace;
/// <summary>
/// 命名空间
/// </summary>
public string NameSpace
{
get { return nameSpace; }
set { nameSpace = value; }
}
private bool _isEnabled;
public bool IsEnabled
{
get { return _isEnabled; }
set
{
SetProperty(ref _isEnabled, value);
}
}
private Visibility _mainViewButtonVisible;
public Visibility MainViewButtonVisible
{
get { return _mainViewButtonVisible; }
set
{
SetProperty(ref _mainViewButtonVisible, value);
}
}
private ObservableCollection<MenuBar> subItems;
public ObservableCollection<MenuBar> SubItems
{
get { return subItems; }
set
{
subItems = value;
this.RaisePropertyChanged();
}
}
private ICommand command;
public ICommand Command
{
get { return command; }
set
{
command = value;
this.RaisePropertyChanged();
}
}
}
private void LoopItemsControl(object child)
{
ItemsControl itemsControl = child as ItemsControl;
for (int i = 0; i < itemsControl.Items.Count; i++)
{
DependencyObject dependencyObject = itemsControl.ItemContainerGenerator.ContainerFromIndex(i);
LoadControlsInXAMLContainer(dependencyObject);
LoopItemsControl(dependencyObject);
}
//if (child is ItemsControl)
//{
// ItemsControl itemsControl = child as ItemsControl;
// for (int i = 0; i < itemsControl.Items.Count; i++)
// {
// LoadControlsInXAMLContainer(itemsControl.ItemContainerGenerator.ContainerFromIndex(i));
// LoopItemsControl(itemsControl.ItemContainerGenerator.ContainerFromIndex(i));
// }
//}
}
foreach (object child in LogicalTreeHelper.GetChildren(dep))
{
if (child is ItemsControl)
{
LoopItemsControl(child);
//ItemsControl itemsControl = child as ItemsControl;
//for (int i = 0; i < itemsControl.Items.Count; i++)
//{
// DependencyObject dependencyObject = itemsControl.ItemContainerGenerator.ContainerFromIndex(i);
// LoadControlsInXAMLContainer(dependencyObject);
//}
//LoopItemsControl(child);
}
LoadControlsInXAMLContainer(child);
}