2009-10-12 13 views
82

Formularze systemu Windows miały właściwość win1.Handle, która, jeśli sobie przypomnę, zwraca uchwyt uchwytu głównego okna?Znajdowanie uchwytu do okna WPF

Czy istnieje równoważny sposób uzyskania uchwytu okna WPF?

znalazłem następujący kod online

IntPtr windowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle; 

ale nie sądzę, że będzie mi pomóc, ponieważ moja aplikacja ma wiele okien.

Dzięki!

+20

Podam pewien przyjacielską radę, Evan. Nie programujcie kultowego ładunku! Odszukaj kod znaleziony online. Widać wyraźnie, że mija aplikację Application.Current.MainWindow iz tego można wywnioskować, że przekazując jej odniesienie do innego okna, otrzymasz odpowiedź. Nigdy nie korzystałem z WindowInteropHelper, ale wciąż byłem w stanie odpowiedzieć na to pytanie po prostu rozumując. –

+1

masz rację, dzięki! Dziś jestem zmęczony :). – Evan

+5

Nie ma problemu! I nie myślałem o tym jako o krytyce, żeby być pomocnym. Od czasu do czasu wszyscy robimy małe kultywowanie ładunków. :) –

Odpowiedz

111

Cóż, zamiast podania Application.Current.MainWindow, wystarczy podać odwołanie do dowolnego okna, które chcesz: new WindowInteropHelper(this).Handle i tak dalej.

32

Wystarczy użyć okna z klasą WindowsInteropHelper:

// ... Window myWindow = get your Window instance... 
IntPtr windowHandle = new WindowInteropHelper(myWindow).Handle; 

Teraz prosisz dla głównego okna aplikacji, które zawsze będzie jeden. Możesz użyć tej samej techniki w dowolnym oknie, pod warunkiem, że jest to klasa Window pochodząca z System.Windows.Window.

3

Jeśli chcesz okno uchwyty do wszystkich swoich aplikacji Window s jakiegoś powodu, można użyć właściwości Application.Windows dostać na wszystkie okna, a następnie użyć WindowInteropHandler dostać na ich uchwytach jak już wykazano.

6

można użyć:

Process.GetCurrentProcess().MainWindowHandle 
+5

Już stwierdza, że ​​nie chce głównego okna – EaterOfCode

Powiązane problemy