我希望在我的应用程序中有可自定义的工具栏,例如Visual Studio 2008提供的工具栏(右键单击工具栏,自定义).我需要一个WPF解决方案,而我无法找到任何解决方案(无论是SO还是谷歌).我确实找到了这个Visual Studio 2010博客条目,这意味着即使是微软也无法做到这一点.所以无论如何,为了保持简单,问题是,是否有任何提供此功能的开源/免费框架(它不必是VS2008解决方案的精确复制品).
我只是玩了一下,我认为单独使用 WPF 实现所需的行为应该相对容易(不需要额外的库或框架)。我包含了将 a 添加Button到 a 的示例代码ToolBar,这又允许向工具栏添加更多按钮。
为了获得您想要的行为,我有一个工具栏按钮集合和另一个包含可用按钮的集合。工具栏ItemsSource将绑定到第一个集合。单击上下文菜单中的“自定义”按钮后,我只显示另一个表单,其中有两个ListViews(每个绑定到一个集合)和按钮,以将完整集合中的按钮添加到工具栏集合或从工具栏集合中删除按钮。HTH。
代码:
public ObservableCollection<Button> Buttons { get; set; }
public MainWindow()
{
InitializeComponent();
Buttons = new ObservableCollection<Button>();
AddButton();
DataContext = this;
}
private void ButtonAddButton_Click(object sender, RoutedEventArgs e)
{
AddButton();
}
private void AddButton()
{
var button = new Button();
button.Content = "Add Button (" + Buttons.Count + ")";
button.Click += ButtonAddButton_Click;
Buttons.Add(button);
}
Run Code Online (Sandbox Code Playgroud)
XAML:
<Grid>
<ToolBarTray>
<ToolBar ItemsSource="{Binding Buttons}">
<ToolBar.ContextMenu>
<ContextMenu>
<MenuItem Header="Customize" />
</ContextMenu>
</ToolBar.ContextMenu>
</ToolBar>
</ToolBarTray>
</Grid>
Run Code Online (Sandbox Code Playgroud)