Supongamos que tengo una propiedad HTML (cadena). ¿Puedo vincular eso a un control WPF WebBrowser? Existe la propiedad Source donde necesito un URI, pero si tengo una cadena HTML en la memoria que quiero renderizar, ¿puedo hacer eso? Estoy usando MVVM, entonces creo que es más difícil usar métodos como webBrowser1.NavigateToString()
, etc. porque no sabré el nombre del control?¿Puedo vincular HTML a un control de navegador web de WPF?
13
A
Respuesta
42
Ver this pregunta.
En resumen, primero se crea una propiedad adjunta, para WebBrowser
public class BrowserBehavior
{
public static readonly DependencyProperty HtmlProperty = DependencyProperty.RegisterAttached(
"Html",
typeof(string),
typeof(BrowserBehavior),
new FrameworkPropertyMetadata(OnHtmlChanged));
[AttachedPropertyBrowsableForType(typeof(WebBrowser))]
public static string GetHtml(WebBrowser d)
{
return (string)d.GetValue(HtmlProperty);
}
public static void SetHtml(WebBrowser d, string value)
{
d.SetValue(HtmlProperty, value);
}
static void OnHtmlChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
{
WebBrowser webBrowser = dependencyObject as WebBrowser;
if (webBrowser != null)
webBrowser.NavigateToString(e.NewValue as string ?? " ");
}
}
Y entonces usted puede unirse a la cadena de html y NavigateToString se llamará cada vez que su cadena HTML cambia
<WebBrowser local:BrowserBehavior.Html="{Binding MyHtmlString}" />
Cuestiones relacionadas
- 1. .NET Visor Html/alternativas de control de navegador web
- 2. ¿Puedo vincular un control WPF a la propiedad de un campo?
- 3. WPF - Vincular visibilidad de control de usuario a una propiedad
- 4. WPF - Vincular propiedad de imagen al control de imagen
- 5. ¿Puedo vincular una WPF TreeView a un único nodo raíz?
- 6. WPF WebBrowser Control: ¿Qué navegador usa?
- 7. Exponer propiedades de control interno para vincular en WPF
- 8. ¿Cómo vincular en WPF un objeto completo a un control de usuario?
- 9. Html control y asp.net web control
- 10. ¿Cómo puedo vincular los modelos de vista anidados a las propiedades de un control?
- 11. ¿Cómo vincular el control TextBox a una instancia de StringBuilder?
- 12. Cómo puedo asignar el Caret a un control en WPF
- 13. Cómo vincular un MemoryStream a asp: ¿control de imagen?
- 14. ¿Cómo vincular un comando en WPF a un controlador de eventos de doble clic de un control?
- 15. ¿Cómo puedo eliminar el archivo que se ha navegado en un control de navegador web?
- 16. Capturar el mouse haga clic derecho en el evento de un control de navegador web
- 17. alerta Detener Javascript emergente en navegador web C# control de
- 18. ¿Cómo puedo vincular un FormView ASP.NET a un solo registro?
- 19. ASP.NET cómo Renderizar un control a HTML?
- 20. ¿Cómo vincular el botón WPF a un comando en ViewModelBase?
- 21. ¿Cómo vincular la propiedad de un control a la propiedad de otro control?
- 22. Control del navegador web: cómo capturar eventos del documento?
- 23. ¿Cómo puedo vincular los datos una lista de cadenas a un ListBox en WPF/WP7?
- 24. Abrir un archivo HTML utilizando el navegador web por defecto
- 25. Cómo cambiar la visibilidad de un control WPF desde ViewModel
- 26. WPF invocar un control
- 27. ¿Cómo vincular correctamente un ListBoxItem en WPF?
- 28. Agregue un control de usuario a una ventana de wpf
- 29. Cómo usar el control del navegador WebKit en WPF
- 30. Desde WPF Control a Silverlight Control
Esta es una buen truco. Sin embargo, al intentar incrustar un WebBrowser dentro de un DataTemplate (por ejemplo, al crear plantillas en el elemento del combobox) no parece funcionar (por alguna razón, el OnHtmlChanged es levantado dos veces, la segunda vez con nulo). – Tomer
@tomer Tuve el mismo problema, así que cambié e.NewValue como una cadena a e.NewValue como una cadena ?? " ". Edité el código para reflejar esto. –