18 votos

WPF WebBrowser (3.5 SP1) Siempre en la parte superior - sugerencias de otros para mostrar HTML en WPF

He estado buscando desesperadamente una manera fácil de mostrar HTML en WPF-aplicación. Hay algunas opciones:
1) utilizar el Control WebBrowser WPF
2) utilice el cuadro de Control
3) el uso de un control de terceros


pero, he ejecutado en los problemas siguientes: 1) el Control WebBrowser WPF no es real WPF (es un Winforms control envuelto en WPF). He encontrado una forma para crear un contenedor para este y uso DependencyProperties para navegar en texto HTML con los enlaces y propertychanged. El problema con esto es, si pones un Winforms control de WPF scrollviewer, no respecto de z-index, es decir, la winform es siempre en la parte superior de otro control WPF. Esto es muy molesto, y he tratado de evitar por la creación de un WindowsFormsHost que aloja una ElemenHost etc.. pero esta completamente rompe el enlace obviamente.

2) Control de Marco tiene los mismos problemas con la indicación de si se muestra el contenido HTML. No es una opción.

3) no he encontrado un HTML nativo-pantalla de WPF. Todas las opciones son winforms, y con los problemas antes mencionados.

la única manera de salir tengo en este momento es el uso de Microsoft buggy HtmlToXamlConverter, que se bloquea a veces difícil. (MSDN)

¿Alguien tiene alguna sugerencia sobre cómo mostrar HTLM en WPF, sin estos problemas?

lo siento por la larga pregunta, espero alguien sabe de qué estoy hablando...

3voto

jing Puntos 31

has probado el Awesomium? por favor, consulte : http://chriscavanagh.wordpress.com/2009/08/25/a-real-wpf-webbrowser/

1voto

Paul Betts Puntos 41354

Si usted no puede utilizar el control WebBrowser, su mejor apuesta es, probablemente, vuelva a escribir su contenido HTML en una FlowDocument (si estás usando HTML estático contenido).

De lo contrario, como usted menciona, usted tiene caso especial WebBrowser, tienes razón en que no actúa como un "verdadero" control WPF. Probablemente debería crear un ViewModel objeto que se puede enlazar a que representa el control WebBrowser donde se puede ocultar todas las feas no vinculante de código en un solo lugar, entonces nunca abra de nuevo :)

1voto

David Waters Puntos 6645

Otro enfoque de trabajo en torno a a la z-index limitación es el uso de una ventana a la superposición de sus componentes WPF sobre el HTML Ver http://karlshifflett.wordpress.com/2009/06/13/wpf-float-buttons-over-web-browser-control/ Nota código a continuación está tomado directamente desde el enlace

<Grid>
  <WebBrowser x:Name="wbBrowser" />

  <Popup x:Name="puOverlay" AllowsTransparency="True" Placement="Bottom"
         PlacementTarget="{Binding ElementName=wbBrowser}">
    <Border x:Name="bdrOverLay" CornerRadius="30" BorderBrush="Blue"
            Background="#1F000000" Padding="7" BorderThickness="2">

      <StackPanel Orientation="Horizontal">
        <StackPanel.Resources>
          <Style TargetType="{x:Type Button}">
            <Setter Property="Width" Value="75" />
            <Setter Property="Margin" Value="3.5" />
            <Setter Property="VerticalAlignment" Value="Center" />
            <Setter Property="HorizontalAlignment" Value="Center" />
          </Style>
        </StackPanel.Resources>
        <Button Command="NavigationCommands.BrowseBack" Content="Back" />
        <Button Command="NavigationCommands.BrowseForward" Content="Forward" />
        <Button Command="NavigationCommands.BrowseHome" Content="Home" />
        <Button Command="ApplicationCommands.Close" Content="Exit" />
      </StackPanel>

    </Border>
  </Popup>
</Grid>

Alternativly hay una 3ª parte de control que toma Win32 controles y las hace (como mapas de bits) en WPF http://www.codeplex.com/WPFWin32Renderer

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X