Me gustaría tener barras de herramientas personalizables en mi aplicación, como las que ofrece Visual Studio 2008 (haga clic con el botón secundario en la barra de herramientas, personalice). Necesito una solución WPF, y no he podido encontrar ninguna (ni en SO ni en Google). Encontré esto Visual Studio 2010 blog entry, lo que implica que incluso Microsoft tuvo algunos problemas para hacerlo. De todos modos, para mantenerlo simple, la pregunta es, ¿existe algún marco de código abierto/libre que proporcione esta funcionalidad (no tiene que ser una réplica exacta de la solución de VS2008).Barra de herramientas personalizable en WPF
Respuesta
Acabo de jugar un poco y creo que debería ser relativamente fácil implementar el comportamiento deseado solo con WPF (no se necesita una biblioteca o marco adicional). Incluí código de ejemplo para agregar un Button
a un ToolBar
que a su vez permite agregar más botones a la barra de herramientas.
Para obtener el comportamiento deseado, tengo una colección de botones para la barra de herramientas y otra colección con botones disponibles. Las barras de herramientas ItemsSource
se vincularán a la primera colección. Después de hacer clic en el botón "personalizar" en el menú contextual, mostraría otro formulario con dos ListViews
(cada uno vinculado a una de las colecciones) y botones para agregar/eliminar los botones de la colección completa a/desde la colección de barras de herramientas. HTH.
Código:
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>
Esta es una respuesta excelente. –
Dado que una ToolBar es un ItemsControl, puede intentar usar los frameworks de arrastrar y soltar para lograr lo que desea.
http://bea.stollnitz.com/blog/?p=53
Esta es una gran solución para el manejo de los elementos enlazados a datos. Necesitará personalizar el código un poco si no está utilizando el enlace de datos para mostrar sus elementos de ToolBar (aunque sugiero que use el enlace de datos, esto hará que guardar las personalizaciones sea mucho más simple).
Al presionar "personalizar" en su aplicación, puede abrir un ListBox con los elementos disponibles (debe estar en la misma ventana para que funcione la solución anterior) y activar y quitar desde/a ToolBars y ListBox usando la propiedad adjunta.
- 1. Ocultar barra de herramientas en WPF FlowDocument
- 2. WPF: elementos de menú anidados en una barra de herramientas
- 3. Elementos de la barra de herramientas de WPF HorizontalAligment = "Right"
- 4. WPF Ribbon - Ocultar barra de herramientas de acceso rápido
- 5. Barra desplegable de barra de herramientas haga clic en evento
- 6. Crear una barra de menú en WPF?
- 7. Personalización de elementos de la barra de herramientas en VS2010
- 8. openoffice Barra de herramientas compleja en java
- 9. Eliminar la barra de herramientas en GVim
- 10. WPF: Botón nemotécnica no funciona si colocar el botón en una barra de herramientas
- 11. fuente de información sobre herramientas en wpf
- 12. WPF barra de herramientas de separación se reduce a nada cuando dentro de un StackPanel
- 13. Eclipse + Git - ¿Cómo obtener barra de herramientas?
- 14. BlackBerry - barra de herramientas del menú personalizado
- 15. SintaxisHighlighter no muestra la barra de herramientas
- 16. iOS: la barra de herramientas no muestra
- 17. iPhone: ocultar/mostrar la barra de herramientas
- 18. ReportViewer - ¿modifica la barra de herramientas?
- 19. Hacer una barra de herramientas del navegador?
- 20. Agregar barra de herramientas a UITableViewController
- 21. Depuración WPF: Herramientas y Técnicas
- 22. WebBrowsable vs Personalizable en elementos web
- 23. ¿Existe una API decente de HTML a Markdown personalizable y personalizable?
- 24. botones extjs en la apariencia de la barra de herramientas
- 25. Separador entre elementos de barra de herramientas en UIToolbar
- 26. Barra de herramientas del menú flotante en jquery
- 27. ¿Cómo personalizar una barra de herramientas en Eclipse?
- 28. Barra de herramientas UIPopoverController en la parte superior
- 29. Cómo window.open con una barra de herramientas en Google Chrome?
- 30. ¿Cómo ocultar la barra de herramientas en Eclipse 4.2?
¿Es tu pregunta acerca de cómo agregar un menú contextual de la bandeja de la barra de herramientas o estás queriendo saber cómo agregar dinámicamente iconos y comandos la barra de herramientas basada en las preferencias del usuario? –
El segundo, y no estoy realmente interesado en implementarlo desde cero, que sé cómo hacerlo, estoy más interesado en algún tipo de marco que me ahorraría algo/la mayoría del trabajo. – Ivan