2012-04-03 9 views
5

Mam siatkę z menu i przewijarką wewnątrz. W scrollviewerze mam groupbox z inną siatką i wewnątrz elementu przeglądarki.Przeglądarka WPF C# przewija nad górnym menu

Problem powstaje, gdy zmniejszam rozmiar mojego okna w stosunku do zawartości zawartości przeglądarki i przewijam w dół w przewijarce. Wszystko ma margines, więc pozostaje pod górnym menu, jednak element webbrowser nie zawiera więc menu. Czy istnieje sposób na rozwiązanie tego problemu? Nie mogę tego rozgryźć: s Margins & Paddings nie działają. Miałem nadzieję, że element siatki wokół niego lub coś zdziała, ale nic nie działa.

EDIT:

Ok próbowałem dodać kod XAML należy jednak pamiętać, że był szalenie ogromny, więc jest to skrajna wersja skrócona: (pierwiastek webbrowser jest w dolnej części kodu)

<Window x:Class="Cleaning_Masters_Official.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Cleaning Masters Offerte Packet - nieuw.off" Name="Main" Width="{DynamicResource {x:Static SystemParameters.MaximizedPrimaryScreenWidthKey}}" 
     Icon="bin\Debug\Images\Main.ico" 
    Height="{DynamicResource {x:Static SystemParameters.MaximizedPrimaryScreenHeightKey}}" Closing="Main_Closing" 
    WindowStartupLocation="CenterScreen" WindowStyle="SingleBorderWindow" WindowState="Maximized"> 

    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="22" /> 
      <RowDefinition Height="*" /> 
      <RowDefinition Name="rowbar" Height="0" /> 
     </Grid.RowDefinitions> 

     <ScrollViewer Margin="10" Grid.Row="1"> 
      <TabControl Name="tabChapters"> 

       <TabItem Header="Algemeen" Name="tabGeneral"> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="*" /> 
          <ColumnDefinition Width="*" /> 
          <ColumnDefinition Width="*" /> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="auto" /> 
          <RowDefinition Height="*" /> 
         </Grid.RowDefinitions> 

         <GroupBox Header="Configureer hoofdstukken:" Margin="10" Padding="10"> 
          <Grid> 
           ...  
          </Grid> 
         </GroupBox> 

         <GroupBox Header="Voorpagina Afbeeldingen:" Margin="10,0,10,10" Padding="10" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2"> 
          <Grid VerticalAlignment="Top"> 
           ...  
          </Grid> 
         </GroupBox> 

         <GroupBox Header="Offerte Info:" Margin="10,10,10,10" Padding="10" Grid.Column="1" Grid.Row="0"> 
          <Grid> 
           ...  
          </Grid> 
         </GroupBox> 

         <GroupBox Margin="0,10,10,10" Header="Inhoudstafel:" Grid.Column="2" Grid.RowSpan="2"> 
          <Grid> 
           <WebBrowser Margin="10" Name="wbInhoudstafel"/> 
          </Grid> 
         </GroupBox> 
        </Grid> 
       </TabItem> 

       <TabItem Header="1. Voorwoord" Name="tabVoorwoord"> 
       </TabItem> 
        ...   
       </TabItem> 
      </TabControl> 
     </ScrollViewer> 

     <Menu DockPanel.Dock="Top" Name="TopMenu"> 
      ...  
     </Menu> 

     <StatusBar Name="sbar" Grid.Row="2" 
      ...  
     </StatusBar> 
    </Grid> 
</Window> 
+0

Czy możesz opublikować swój xaml? –

+0

ok, dodano jasną wersję kodu Xaml – WtFudgE

Odpowiedz

2

Kontrolka WPF WebBrowser jest w zasadzie starym kontrolerem Win32 Webbrowser i technicznie renderowana powyżej zawartości WPF. Dodatkowo ma kilka poważnych problemów z obliczaniem rozmiaru.

Zobacz http://msdn.microsoft.com/en-us/library/aa970688(v=vs.85).aspx

Obawiam się, nie ma sposobu, aby powiedzieć formantu WebBrowser, aby zmienić to zachowanie.

Ale istnieją alternatywne kontrole tam:

http://wpfchromium.codeplex.com/

http://awesomium.com/

Edit:

Znaleziony świetny podsumowanie tutaj na SO, który wskazuje na pewne alternatywy:

WPF WebBrowser (3.5 SP1) Always on top - other suggestion to display HTML in WPF

+0

+1 dla odpowiedzi, a jeśli mógłbym, +1 dla edycji – Gabber