Autor Beitrag
ebber
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: Fr 24.10.08 14:13 
Hallo,

ich habe ein Grid in meinem WPF Programm das ich irgendwann nach links schiebe. Darauf sind ein paar Buttons... und unter anderem ein Webbrowser. Wenn ich das Grid jetzt verschiebe, dann verschiebt sich alles darauf mit bis auf den Webbrowser. Könnte es sein dass er irgendwie nicht automatisch neu gezeichnet wird oder sowas?

Beobachtung: Wenn ich während sich das ganze verschiebt aus dem Fenster gehe, also meinen Focus auf irgendwas anderes wie das Programm setzte dann erscheint der Webbrowser an der stelle an der er eigentlich beim Verschiebevorgang gerade sein sollte, danach verschiebt sich wieder alles ohne Webbrowser zu ende.

Kann ich da irgendwas machen damit sich der Webbrowser mit verschiebt?

MfG
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 24.10.08 15:49 
Nur mit der Beschreibung kann man wahrscheinlich gar nichts dazu sagen. Da braucht man schon mehr Informationen, z.B. mal den XAML-Code.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
ebber Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: Fr 24.10.08 22:59 
Ja da hast du wohl recht. Sorry. Ich war vorhin ein wenig in eile. Ich hoffe ich habe hier die releveanten Codestücke gefunden? Das ganze ist mit Expression Blend erstellt.

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
  <Storyboard x:Key="OnMouseLeftButtonUp1">
      <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TbCProviders" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="-785"/>
        <SplineDoubleKeyFrame KeyTime="00:00:00.7000000" Value="807"/>
        <SplineDoubleKeyFrame KeyTime="00:00:01.4000000" Value="0"/>
      </DoubleAnimationUsingKeyFrames>


ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
    <TabControl Margin="-41.363,0,199.484,0" x:Name="TbCProviders" IsEnabled="True" IsSynchronizedWithCurrentItem="True" SelectedIndex="0" Background="{x:Null}" BorderThickness="0,0,0,0" TabStripPlacement="Left" HorizontalContentAlignment="Left" VerticalContentAlignment="Top" RenderTransformOrigin="0.5,0.5">
      <TabControl.RenderTransform>
        <TransformGroup>
          <ScaleTransform ScaleX="1" ScaleY="1"/>
          <SkewTransform AngleX="0" AngleY="0"/>
          <RotateTransform Angle="0"/>
          <TranslateTransform X="0" Y="0"/>
        </TransformGroup>
      </TabControl.RenderTransform>
      <TabItem Width="28" Height="17" ContentStringFormat="" Header="">
        <Grid>
          <Microsoft_Windows_Themes:SystemDropShadowChrome x:Name="systemDropShadowChrome" VirtualizingStackPanel.VirtualizationMode="Standard" Margin="24.479,296.97,8,40.03">
            <WindowsFormsHost x:Name="windowsFormsHost1" OpacityMask="#D1000000" Margin="0,0,0,0" Background="{DynamicResource Orange Back}" Padding="2,2,3,9" Foreground="#FF000000" />
          </Microsoft_Windows_Themes:SystemDropShadowChrome>
          <TextBox VerticalAlignment="Top" TextWrapping="Wrap" Background="#00FFFFFF" Foreground="#FFFFFFFF" x:Name="TBLinks" AcceptsReturn="True" Style="{DynamicResource TextBoxStyle1Rs}" VerticalScrollBarVisibility="Auto" TextChanged="TBLinks_TextChanged" BorderBrush="{DynamicResource Orange Back}" HorizontalScrollBarVisibility="Auto" Margin="76.365,36.364,8,0" VerticalContentAlignment="Top" Height="238.5"/>
        </Grid>
      </TabItem>
      <TabItem Height="13" ContentStringFormat="" Header=""/>
      <TabItem ContentStringFormat="" Header="">
        <Grid/>
      </TabItem>
    </TabControl>



Also ich verschiebe das TabControl wodrauf ein Grid ist in dem ein Webbrowser und eine Textbox ist. Die Textbox verschiebt sich und auch der Schatten hinter dem Webbrowser. Das hier ist jetzt noch mit einem WinFormHost und darin ist der Webbrowser, aber ich habe das auch mit dem neuen WPF Webbbrowser probiert, gleiches Ergebnis.
ebber Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: Mo 27.10.08 17:43 
Hat keiner eine Idee? :?:

Kann ich den Webbrowser irgendwie "von Hand" verschieben?
Oder funktioniert das damit einfach nicht, weil andere Sachen funktionieren bei mir damit auch nicht, z.B. OpacityMask?

MfG
jpkleinau
Hält's aus hier
Beiträge: 16

Vista
XAML, C#
BeitragVerfasst: Di 28.10.08 14:02 
Wie ich vermute, verwendest du den WindowsFormsHost msdn.microsoft.com/d...indowsformshost.aspx. Da sollte es dich auch nicht wundern, wenn sich WindowsForms nicht wie WPF verhält.

In .Net 3.5 SP1 gibt es einen neuen Webbrowser, der sich auch so verhalten soll blogs.msdn.com/llobo.../wpf-webbrowser.aspx als wäre er WPF.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 28.10.08 16:11 
user profile iconjpkleinau hat folgendes geschrieben Zum zitierten Posting springen:
In .Net 3.5 SP1 gibt es einen neuen Webbrowser, der sich auch so verhalten soll blogs.msdn.com/llobo.../wpf-webbrowser.aspx als wäre er WPF.
Der Konjunktiv passt :D . Der neue WebBrowser basiert auf dem gleichen ActiveX-Control wie sein SWF-Pendant, sollte sich in WPF also ebenso wenig zu Hause fühlen. Was ebber schon selbst beobachtet hat:
user profile iconebber hat folgendes geschrieben Zum zitierten Posting springen:
Das hier ist jetzt noch mit einem WinFormHost und darin ist der Webbrowser, aber ich habe das auch mit dem neuen WPF Webbbrowser probiert, gleiches Ergebnis.



user profile iconebber hat folgendes geschrieben Zum zitierten Posting springen:
Kann ich den Webbrowser irgendwie "von Hand" verschieben?
Geraten: Vielleicht funktioniert es ja statt mit einer TranslateTransform auf einer Canvas. Ansonsten muss die Animation wohl leider wegfallen ;) .

_________________
>λ=
jpkleinau
Hält's aus hier
Beiträge: 16

Vista
XAML, C#
BeitragVerfasst: Fr 07.11.08 17:41 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Was ebber schon selbst beobachtet hat:

Ach, da war noch Text hinter dem vielen Code, habe ich glatt übersehen ;-)

Na, wir haben ja nun den Formshost, den Webbrowser und Frame. Und jedes verhält sich anders. Nur keines so wie es müsste.
Nun, mit Gewalt über das Handle kann man jedes Fenster verschieben. Schön ist das nicht.
ebber Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: Sa 08.11.08 18:09 
Ja, ich habe das schon versucht, es lässt sich verschieben. Aber eben dann immer nur Pixelweise und manuell ohne Animation. Schön ist das nicht und es zwingt meinen PC in die Knie, den Webbrowser ein mal die Sekunde neu zu zeichnen.

Ich habe die Animation jetzt ein wenig geändert, verschiebt sich der Webbrowser eben nicht mehr. Wenn doch noch jemand die Lösung findet wäre das aber gut.

MfG
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 08.11.08 18:25 
Frickel-Lösungen gibt es sicher noch einige: Da der Browser während der Animation ja hoffentlich nicht bedienbar sein muss, könntest ihn währenddessen durch ein Image mit RenderTargetBitmap (falls sich das mit Win32-Controls verträgt) ersetzen.

_________________
>λ=
ebber Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: Sa 08.11.08 18:58 
Funktioniert Leider nicht.

Mit winFormHost und dem Webbrowser drin weis ich nicht wie das geht. RenderTargetBitmap() nimmt nur WPF Controls.
Funktioniert auch mit jedem, aber mit dem WPF Webbrowser kommt einfach nichts, also mein Image bleibt leer.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 08.11.08 19:25 
Ich wollte gerade vorschlagen, den Winforms-Weg zu gehen, aber das sieht auch nicht gut aus:
Zitat:
The DrawToBitmap method is not supported for ActiveX controls.

_________________
>λ=
jpkleinau
Hält's aus hier
Beiträge: 16

Vista
XAML, C#
BeitragVerfasst: Mo 10.11.08 18:38 
user profile iconebber hat folgendes geschrieben Zum zitierten Posting springen:
Funktioniert Leider nicht. Mit winFormHost und dem Webbrowser drin weis ich nicht wie das geht. RenderTargetBitmap() nimmt nur WPF Controls.
Funktioniert auch mit jedem, aber mit dem WPF Webbrowser kommt einfach nichts, also mein Image bleibt leer.


Guckst du hier, das könnte dir weiterhelfen. Was das Verschieben betrifft und sowas wie Zoom. Da geht es hardcore an die Handles und weiteres. Das mag ich hier nicht darstellen. Wir haben das als Frame oder als ActiveX gelöst. Je nach Patch und ServicePack muss man sogar das eine oder andere nehmen.

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
                        try
                        {
                            if (framebrowser)
                            {
                                RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap((int)Width, (int)Height, 9696, PixelFormats.Pbgra32);
                                Visual capture = PrintToVisual(CoreStorage.NFSEnvironment.UserPath + GetType().Name + ".xps", frame);
                                if (capture != null)
                                {
                                    renderTargetBitmap.Render(capture);
                                    renderTargetBitmap.Freeze();

                                    ImageBrush db = new ImageBrush(renderTargetBitmap);
                                    db.TileMode = TileMode.None;
                                    db.Stretch = Stretch.Uniform;
                                    db.Freeze();
                                    imageGrid.Background = db;
                                }
                                else
                                {
                                    imageGrid.Background = new SolidColorBrush(Colors.White);
                                }
                            }
                            else
                            {
                                DrawingGroup dg = VisualTreeHelper.GetDrawing(browserhost);
                                DrawingBrush db = new DrawingBrush(dg);
                                db.TileMode = TileMode.None;
                                db.Stretch = Stretch.Uniform;
                                imageGrid.Background = db;
                            }
                        }
                        catch
                        {
                            imageGrid.Background = new SolidColorBrush(Colors.White);
                        }