BEARBEITEN: Ich habe mich hier geantwortet. Awesomium ist in der Lage dies zu tun, aber nicht IE
Wie bereits erwähnt, kann dies nicht mit aktuellen .Net WebBrowser getan werden. Ich konnte dies mit Awesomium erreichen. Wenn Sie ihre .NET-Beispiele herunterladen und den Browser mit Registerkarten ändern, können Sie dies testen, indem Sie ein neues WebControl und eine neue WebSession hinzufügen, die damit verknüpft ist. Nur ein neues DataPath Verzeichnis für die neue Sitzung bilden (dh .Cache2)
In meinem Beispiel bearbeitete ich folgendes:
Added ein neues Websession in TabView.xaml:
<awe:WebSessionProvider
x:Key="GlobalSession2"
x:Shared="False"
DataPath=".\Cache2"
Preferences="{x:Static local:MainWindow.WebPreferences}"/>
Modified die Zeilen eine neue Zeile hinzuzufügen:
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="300"/>
<RowDefinition Height="300"/>
</Grid.RowDefinitions>
hat ein neues WebControl (und sorrounding Grenzen usw.) direkt nach dem Ende des sorroundings ersten WebControl. Dies nutzt die neue Session zuvor hinzugefügt:
<Grid x:Name="browserContainer2" Grid.Row="2">
<Border
x:Name="browserBorder2"
BorderThickness="0,1,0,0"
BorderBrush="{DynamicResource ControlBorderBrush}"
Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
<awe:WebControl
x:Name="PART_Browser2"
Source="{Binding Source2, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}"
NativeView="{Binding NativeView, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}"
IsSourceView="{TemplateBinding IsSourceView}"
IsEnabled="{TemplateBinding IsSelected}"
WebSession="{Binding Source={StaticResource GlobalSession}}" />
</Border>
<ui:MetroProgressBar
Grid.ZIndex="100"
VerticalAlignment="Top"
HorizontalAlignment="Stretch"
Margin="0,3"
IsIndeterminate="{Binding IsNavigating, ElementName=PART_Browser}"
Visibility="{Binding IsNavigating, ElementName=PART_Browser, Converter={StaticResource BooleanToVisibilityConverter}}"/>
<Grid
x:Name="statusGrid2"
Height="25"
VerticalAlignment="Bottom"
Opacity="0.8">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Border
x:Name="statusBox2"
Background="{DynamicResource ControlBackgroundBrush}"
BorderBrush="{DynamicResource ControlBorderBrush}"
BorderThickness="0,1,1,0"
CornerRadius="0,5,0,0"
IsHitTestVisible="False">
<TextBlock
x:Name="targetURLBlock2"
VerticalAlignment="Center"
Margin="5,0"
IsHitTestVisible="False"
Focusable="False"
Text="{Binding TargetURL, ElementName=PART_Browser, Converter={StaticResource UrlConverter}}"
TextTrimming="CharacterEllipsis"/>
</Border>
<Grid
x:Name="zoomBox2"
Grid.Column="1"
Margin="5,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Border
Grid.ZIndex="-100"
Grid.ColumnSpan="2"
Background="{DynamicResource ControlBackgroundBrush}"
BorderBrush="{DynamicResource ControlBorderBrush}"
BorderThickness="1,1,0,0"
CornerRadius="5,0,0,0"
IsHitTestVisible="False"/>
<TextBlock
VerticalAlignment="Center"
Margin="7,0"
Text="Zoom:"/>
<Slider
x:Name="zoomBar2"
Grid.Column="1"
DataContext="{Binding ElementName=PART_Browser}"
Style="{StaticResource FlatSlider}"
Margin="0,0,25,0"
Minimum="10"
Maximum="400"
Width="120"
VerticalAlignment="Center"
Value="{Binding Zoom}"
AutoToolTipPlacement="TopLeft"
IsSnapToTickEnabled="True"
IsMoveToPointEnabled="True"
SmallChange="1"
LargeChange="10"
TickFrequency="10"
Focusable="False">
<Slider.ContextMenu>
<ContextMenu DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}">
<MenuItem Command="{x:Static awe:WebControlCommands.ResetZoom}" CommandTarget="{Binding}" />
</ContextMenu>
</Slider.ContextMenu>
</Slider>
</Grid>
</Grid>
</Grid>
Dann habe ich eine neue Source-Eigenschaft in TabView.cs hinzugefügt, um den zweiten Browser-URL zu speichern:
public Uri Source2
{
get { return this.GetValue(SourceProperty2) as Uri; }
set { SetValue(SourceProperty2, value); }
}
public static readonly DependencyProperty SourceProperty2 =
DependencyProperty.Register("Source2",
typeof(Uri), typeof(TabView),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
Und schließlich fest einprogrammiert zwei URLs die beiden eingebetteten zu starten Browser
internal TabView(MainWindow parent, Uri url, bool isSourceView)
{
parentWindow = parent;
this.IsSourceView = isSourceView;
this.Source = new Uri("http://www.google.com");
this.Source2 = new Uri("http://www.google.com");
}
Ich suche derzeit mit Awesomium. Sieht so aus, als könnten WebSessions einzeln zwischengespeichert werden, hoffentlich werde ich es bald herausfinden. – JAnton
Okay. Viel Glück. –