Supponiamo di avere una proprietà HTML (stringa). Posso legarlo a un controllo WebBrowser WPF? C'è la proprietà Source in cui ho bisogno di un URI, ma se ho una stringa HTML in memoria che voglio renderizzare, posso farlo? Sto usando MVVM, quindi penso che sia più difficile usare metodi come webBrowser1.NavigateToString()
ecc? cos non conoscerò il nome del controllo?È possibile associare HTML a un controllo browser Web WPF?
13
A
risposta
42
Vedere la domanda this.
In sintesi, prima si crea una proprietà associata per browser web
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 ?? " ");
}
}
E poi è possibile associare alla stringa di html e NavigateToString saranno chiamati ogni volta che la stringa di codice HTML cambia
<WebBrowser local:BrowserBehavior.Html="{Binding MyHtmlString}" />
Problemi correlati
- 1. È possibile associare i dati a un controllo TreeView?
- 2. Browser Web WPF - scarica l'HTML?
- 3. WPF - Associare la proprietà dell'immagine a Controllo immagine
- 4. È possibile eseguire l'applicazione WPF sul browser?
- 5. È possibile associare un DataTrigger a una proprietà associata?
- 6. È possibile associare dati a un metodo in Silverlight?
- 7. Posso associare un controllo WPF alla proprietà di un campo?
- 8. .NET visualizzatore HTML/alternative di controllo del browser Web
- 9. WPF: associare un ContextMenu a un comando MVVM
- 10. È possibile disegnare il controllo WPF sul controllo HwndHost?
- 11. È possibile associare un elenco a un ListView in WinForms?
- 12. È possibile ottenere l'Hwnd di un controllo Popup WPF?
- 13. è possibile ancorare un controllo a un altro controllo?
- 14. È possibile integrare un controllo del browser Web in un'app Metro XAML con tutte le funzionalità di un'app Metro Web?
- 15. È possibile creare un modello di controllo a schede WPF che non assomigli a un controllo a schede?
- 16. C# Proxy controllo browser Web
- 17. WPF - Come associare un DataGridTemplateColumn
- 18. MVVM WPF: associare un ViewModel diverso a ciascun TabItem?
- 19. Come associare un comando in WPF a un gestore di eventi doppio clic di un controllo?
- 20. Windows Phone 8 Controllo del browser Web
- 21. Come associare i BlackoutDate in WPF Toolkit Controllo calendario?
- 22. Controllo Html e controllo web asp.net
- 23. Come associare correttamente xml a DataGrid WPF?
- 24. Come associare più valori a un singolo TextBlock WPF?
- 25. Come incorporare un controllo del browser Web in un'applicazione multipiattaforma?
- 26. WPF: come associare a una proprietà nidificata?
- 27. Associare qualsiasi documento XML a WPF TreeView
- 28. Associare un pannello pila controllo utente a una raccolta osservabile in WPF
- 29. Controllo browser Web: come acquisire gli eventi del documento?
- 30. Evidenziamento ortografico Controllo ortografia nel browser web
Questo è un bel trucco. Tuttavia, quando si tenta di incorporare un WebBrowser all'interno di un DataTemplate (ad esempio, quando si tenta l'elemento di una casella combinata) non sembra funzionare (per qualche motivo, OnHtmlChanged viene generato due volte, la seconda volta con null). – Tomer
@tomer Ho avuto lo stesso problema, quindi ho appena cambiato e.NewValue come stringa su e.NewValue come stringa ?? " ". Ho modificato il codice per riflettere questo. –