So.
Und schon das nächste Problem.
Will nun ein paar kleinere Toolfenster in einem Fremworkelement docken UND wenn der Mauszeiger nicht auf denen ist, sollen diese SAMT RAHMEN transparent werden (bzw. halbdurchsichtig).
Nun stoße ich jedoch an meine Grenzen in WPF.
Das Docken bekomme ich imoment nur zum gesamten Hauptfenster hin, ein Anfang, aber nicht mein Ziel und auch sehr unschöner Code (instabil¿).
Code den ich als Funktion aufriufe
Code hinter der SetParent-Funktion (Modifizierter und gekürzter Code aus dem Internet, aber funktionsfähig)
Das wäre der eine Teil.
Das mit der Transparenz haut dem ganzen jedoch den Boden aus dem Fass.
Einerseits mag WPF das anscheinend nur wenn ich AllowTransparency auf true stelle.
Im Hauptfenster kein problem, da das eh keinen Rahmen hat.
Im Toolfenster jedoch ein Problem, da das seinen Rahmen behalten soll.
Zudem verschwindet das Toolfenster sofort nach dem Öffnen.
Wenn ich jedoch AllowTransparency im Hauptfenster auf false stelle, bleibt es da, wird aber auch nur grau abgestuft.
Wenn wer nicht weiß wie ich das meine, Paint.Net ist dazu das beste Beispiel.
Hoffe es weiß mal wieder wer Rat^^
Gruß Drache2
Und schon das nächste Problem.
Will nun ein paar kleinere Toolfenster in einem Fremworkelement docken UND wenn der Mauszeiger nicht auf denen ist, sollen diese SAMT RAHMEN transparent werden (bzw. halbdurchsichtig).
Nun stoße ich jedoch an meine Grenzen in WPF.
Das Docken bekomme ich imoment nur zum gesamten Hauptfenster hin, ein Anfang, aber nicht mein Ziel und auch sehr unschöner Code (instabil¿).
Code den ich als Funktion aufriufe
Code:
Helfer.Fenster_Docken.SetParent(
new System.Windows.Interop.WindowInteropHelper(this.linienlistefenster).Handle,
new System.Windows.Interop.WindowInteropHelper((Window)((Grid)this.Parent).Parent).Handle);
Code hinter der SetParent-Funktion (Modifizierter und gekürzter Code aus dem Internet, aber funktionsfähig)
Code:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr
FindWindow([MarshalAs(UnmanagedType.LPTStr)] string lpClassName,
[MarshalAs(UnmanagedType.LPTStr)] string lpWindowName);
[DllImport("user32.dll")]
public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
/// <summary>
/// Einzelnes Form auf den Desktop Festkleben
/// </summary>
/// <param name="formToDock">Formular, dass an den Desktop gedockt werden soll</param>
public void StartDocking(Window formToDock, IntPtr Parent)
{
IntPtr hwndParent = FindWindow("progman", null);
SetParent(new WindowInteropHelper(formToDock).Handle, hwndParent);
}
Das wäre der eine Teil.
Das mit der Transparenz haut dem ganzen jedoch den Boden aus dem Fass.
Einerseits mag WPF das anscheinend nur wenn ich AllowTransparency auf true stelle.
Im Hauptfenster kein problem, da das eh keinen Rahmen hat.
Im Toolfenster jedoch ein Problem, da das seinen Rahmen behalten soll.
Zudem verschwindet das Toolfenster sofort nach dem Öffnen.
Wenn ich jedoch AllowTransparency im Hauptfenster auf false stelle, bleibt es da, wird aber auch nur grau abgestuft.
Wenn wer nicht weiß wie ich das meine, Paint.Net ist dazu das beste Beispiel.
Hoffe es weiß mal wieder wer Rat^^
Gruß Drache2