我想在我的应用程序中有可定制的工具栏,就像Visual Studio 2008提供的工具栏(右键单击工具栏上的自定义)。我需要一个WPF解决方案,而且我还找不到任何(在SO或Google上)。我确实发现了这个Visual Studio 2010 blog entry,这意味着即使是微软在做这件事上也有一些麻烦。因此,无论如何,为了简单起见,问题是,是否有任何提供此功能的开源/免费框架(它不一定是VS2008解决方案的精确副本)。WPF中的可自定义工具栏
7
A
回答
3
我只是玩了一下,我认为用WPF单独实现所需的行为应该比较容易(不需要额外的库或框架)。我包含的示例代码将Button
添加到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);
}
XAML:
<Grid>
<ToolBarTray>
<ToolBar ItemsSource="{Binding Buttons}">
<ToolBar.ContextMenu>
<ContextMenu>
<MenuItem Header="Customize" />
</ContextMenu>
</ToolBar.ContextMenu>
</ToolBar>
</ToolBarTray>
</Grid>
+1
这是一个杰出的答案。 – 2015-01-08 14:45:54
1
由于ToolBar是一个ItemsControl,你可以尝试使用拖放框架来实现你想要的。
http://bea.stollnitz.com/blog/?p=53
这是用于处理数据绑定项目的最佳解决方案。如果你没有使用数据绑定来显示你的ToolBar项目,你需要定制一些代码(尽管我建议你使用数据绑定,这将使得定制更加简单)。
当您在应用程序中点击“自定义”时,您可以打开带有可用项目的列表框(它必须位于上述解决方案的同一窗口中才能工作),并启用拖放到工具栏和列表框使用附加的属性。
相关问题
- 1. WPF自定义工具栏
- 2. 自定义markitUp工具栏
- 3. SSMS工具栏自定义
- 4. 自定义WYSIHTML5工具栏
- 5. mediawiki中的自定义工具栏
- 6. CKEditor定义自定义工具栏
- 7. 带图像的自定义工具栏
- 8. 如何自定义ckeditor的工具栏
- 9. 自定义工具栏的Android
- 10. CKEditor的多个自定义工具栏
- 11. 的Android DrawerLayout与自定义工具栏
- 12. 是否可以在Visual Studio 2010中自定义工具窗口的工具栏
- 13. 工具栏在自定义UIViewController中不可见
- 14. CKEditor自定义工具栏配置
- 15. 自定义工具栏问题
- 16. 自定义材质设计工具栏
- 17. 自定义sencha触摸工具栏
- 18. 如何自定义XCode工具栏?
- 19. 自定义ITHIT AjaxFilebrowser工具栏
- 20. 自定义工具栏重叠片段
- 21. RibbonGroup'自定义工具栏'OfficeID?
- 22. 自定义工具栏设计
- 23. Firefox自定义工具栏按钮
- 24. 自定义工具栏Kendo Grid
- 25. 无法自定义django-ckeditor工具栏
- 26. 工具栏溢出自定义字体
- 27. CKEditor自定义工具栏WITH config.extraPlugins
- 28. 更改自定义工具栏文本
- 29. MS AJAX HTMLEditor - 自定义工具栏
- 30. BlackBerry - 自定义菜单工具栏
您对如何添加上下文菜单中的工具栏托盘上或者是你想知道如何动态地添加图标和命令的问题基于用户喜好的工具栏? – 2010-07-20 14:05:15
第二个,我不是真的有兴趣从头开始实施它,我知道该怎么做,我更喜欢某种可以节省我一些/大部分工作的框架。 – Ivan 2010-07-20 14:55:01