2009-09-21 10 views
17

WCF kullanarak iletileri gönderecek ve alacak olan basit bir MSN biçiminde bir program yazdım. Ana form, gönderilecek iletiyi yazmak için bir Metin Kutusu içerir. Arka planda uygulama, yeni mesajlar için sunucuyu birkaç saniyede bir sorgular. Yeni bir mesaj alındığında, görüntülemek için yeni bir pencere açılır. Bunun Dispatcher sınıfını kullanarak UI iş parçacığı üzerinde yapılması gerekir.Odağı çalmaktan yeni bir WPF formu nasıl önlenir?

Sorun, yeni pencere gösterildiğinde, odaklamanın TextBox'tan kaymasıdır, böylece yazım kesintiye uğrar. Bu çok sinir bozucu! MSN Messenger'da, bir mesaj alırken kendi mesajınızı yazmaya devam etmek mümkündür. Nasıl oldu?

Bir geçici çözüm olarak, TextBox'ın odaklandığı sırada açılan pencerede yeni iletiyi erteliyorum, ancak daha iyi bir yol olmalı!

+1

var mı? –

cevap

46

Yanıt basit: .NET 3.5 SP1 WPF formları bir ShowActivated özelliğine sahip olduğundan. Bunu yanlış olarak ayarlayın ve bu şekilde işaretlenmiş herhangi bir form artık odaklanmayacaktır!

+8

Bir WPF formu? Bu da ne? –

-2

Pencerenin Odaklanabilir özelliğini false olarak ayarlayabilirsiniz.

+1

Bu durumda değil. Kullanıcı, – Dabblernl

-1

Uygulamamda, MainWindow'ım küçültülmüşken, ancak odağı çalmadan tüm diğer pencerelerin üstüne bir Bildirim Penceresi göstermem gerekiyor.

Yani bunu yapın: o odaklanmış olmadan yeni bir pencere açmak için bir yol

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    this.Topmost = true; 
    this.Topmost = false; 
} 
+1

formu ile etkileşimde bulunabilmelidir Yüklenen olay, pencere zaten etkinleştirildikten ve gösterildikten sonra harekete geçtiğinden, odağı çalmaktan dolayı bu durum durmaz. – Wobbles

İlgili konular