Hallo,
Ich habe in meiner Anwendung ein Hauptfenster welches im Fullscreen-Modus starten soll. Die Taskleiste soll allerdings sichtbar bleiben und nicht überdeckt werden.
<!--Stil von Fullscreen-Fenstern-->
<Style x:Key="FullscreenWindow" TargetType="{x:Type Window}">
<Setter Property="Background" Value="{DynamicResource BackgroundBrush}"/>
<Setter Property="WindowState" Value="Maximized"/>
<Setter Property="WindowStyle" Value="None"/><!--ohne diese Zeile bleibt die Taskleiste sichtbar-->
<Setter Property="MinWidth" Value="600"/>
<Setter Property="MinHeight" Value="400"/>
</Style>
Das funktioniert wunderbar solange ich den Standard-WindowHeader von Windows angezeigt lasse. Sobald ich jedoch WindowStyle auf 'None' setze verschwindet die Taskleiste wenn das Fenster maximiert ist. Wie kann ich das verhindern???
interessant
das problem kann man nur umgehen mit der api http://blogs.msdn.com/llobo/archive/2006/08/01/Maximizing-window-2800_with-WindowStyle_3D00_None_2900-considering-Taskbar.aspx
Ich hab das mit den Interop-Aufrufen mal zum testen eingebaut und es scheint zu funktionieren. Allerdings gefällt mir diese Lösung überhaupt nicht. Ist WPF nicht mal in der Lage Vollbildfenster ohne Rahmen zusammen mit der Taskleiste anzuzeigen???
Ausserdem wird MinWidth und MinHeight nicht mehr beachtet wenn ich diesen Aufruf mache...
scheint so
komische ist nur - ich glaub das auch schonmal gemacht zu haben und hatte keine derartigen probleme - ich schau zuhause nochmal ins projekt wie das war- melde mich
tatsaechlich
bei meiner alten app wird die start leiste auch verdeckt
hatte ich gar nicht gemerkt - meine betatester hattens auch nicht erwaehnt
schande...
Also ich werds vermutlich auch mal so lassen dass die Startleiste verdeckt wird.
Dadurch dass ich keinen Standard-Border habe ist es wichtig dass das Fenster MinHeight/Width beachtet. Sonst kann man es auf eine ca 4x4px Größe kleinmachen. Und das ist wenig sinnvoll. Ausserdem ist mein Layout auf mindestens 800x600 ausgelegt. Wenn man es kleiner macht sieht alles doof aus...
Ich werde jedoch weiterhin nach einer Möglichkeit die Taskleiste trotz maximierten non-border Window einzublenden.
Mich stört diese Verhalten ebenfalls. Man könnte eventuell beim Start die aktuelle Auflösung auslesen und das Fenster manuell so skalieren, dass die Taskleiste nicht verdeckt ist.
Naja das Problem dabei ist wohl, dass man nicht genau weiß wie groß die Taskleiste ist (also Höhe von Win Vista Startleiste z.B. != Höhe von Win XP Startleiste - denk ich zumindest oder irre ich mich da?)
Gruß,
Tom
nicht nur das - der benutzer kann ja die leiste doppelt oder dreifach hoch haben
kann man sowas messen ?
nicht nur das - der benutzer kann ja die leiste doppelt oder dreifach hoch haben
kann man sowas messen ?
kann man ohne Probleme.
// Gets an array of all the screens connected to the system.
Screen[] screens = Screen.AllScreens;
upperBound = screens.GetUpperBound(0);
int iSichtbareBreite = screens[0].WorkingArea.Width;
int iSichtbareHoehe = screens[0].WorkingArea.Height;
dafür werden folgende Sachen benötigt:
using System.Windows.Forms;
using System.Drawing;
oh ja das kenn ich
bestes beispiel ist winamp
wenn eine neue winamp version raus ist kommt so ein popup fenster mit nem download button
unser desktop rechner hat die startleiste oben angedockt
und dieses dumme popup fenster ist immer soweit oben angedockt das man es nicht schliessen kann, auch ein verschieben per "rechtsklick - verschieben" ist nicht moeglich da das fenster selber das nicht ermoeglicht und es kein button in der startleiste hat
entsprechend bekommt man das fenster nicht weg - man muss winamp erst beenden
manch andere applikationen kann man wenigstens noch mit der tastatur soweit runter schieben bis man es richtig benutzen kann
sowas ist mehr als schrecklich