2010-03-09 13 views
6

WPF kullanıyoruz ve DockingLibrary'den türetilmiş bir pencereye sahibiz. Bu pencerede, içinde bir WPF datagrid olan birden fazla öğeye sahip bir ızgara vardır. M-V-VM modelini kullanıyoruz. Bu ön kısım oluşturulduğunda ve gösterildiğinde, bu veri kılavuzundaki satırların hiçbiri seçilmez. Biz böyle bir şey yaparak vurgulanan satır görüntülemek için ayarlayabilirsiniz:WPF Penceresinde odağın kimin olduğunu belirleme

SharedWindow.ShipmentWin.shipmentDataGrid.SelectedIndex = 0; 

Bu vurgulanmış olarak gösterilir edilecek datagrid'e ilk satırı neden olur. Ama, ve her zaman bunlardan biri yok, bu sıra Seçildi, ne de Focus var. Ben olduğu gibi bu satırda IsSelected ve Odak ayarı çalıştı:

SharedWindow.ShipmentWin.ShipVM.IsSelected = true; 
    bool focused = SharedWindow.ShipmentWin.shipmentDataGrid.Focus(); 

ben her şeyi yanlış mıyım ve buna datagrid'e ilk satırı ve set odağı Seç başka bir yolu var mı? Tipik olarak, bir datagrid oluşturulduğunda, kullanıcı faresi istenen satıra tıklayana kadar hiçbir satır seçilmez.

Herhangi bir düşünce büyük takdir edilecektir.

Teşekkürler!

cevap

9

FocusManager'a bir bakın. Bu, odağı SetFocusedElement yöntemi aracılığıyla başka bir UI öğesine ayarlamanıza olanak tanır. Ek olarak, uygulamanızda o anda odaklanmış öğeyi belirlemenize olanak tanır, bu da odak sorunlarını ayıklamak için kullanışlı olabilir. Snoop da yararlı olabilir. Alt durum çubuğunda o anda odaklanmış elemanı gösterir.

WPF Toolkit'ten DataGrid'i kullanırsanız, odak işleme ile ilgili bazı hataları bulmaya hazır olun. Bazıları recently adresinde ele alınmıştır.

+0

Teşekkürler Olli! Şimdi buna bir bakacağım. –

+0

Aradığım şey buydu, ama bana doğru yönde işaret etseniz bile, anlamaya çalışmak kolay değildi. Odağı şu şekilde ayarlamak için onload yöntemine kod koymalıydım: Keyboard.Focus (shipmentDataGrid); Burada shipmentDataGrid, klavye kısayol tuşlarının sahibi. –

0

Ayrıca mantıksal odak ve oldukça farklı hayvanlardır klavye odak arasındaki farkı anlamak değer. .Focus() yöntemi bazen yalnızca mantıksal odağını ayarlar - bu muhtemelen istediğiniz gibi değildir.

Focus yöntemi için documentation aksi klavye odağını kurulmuştur true dönün ve false edeceğini söyler.

+0

Teşekkürler Dan! Gerçekten doğru ve bu benim fark etmemiş olduğum bir şeydi. Ayarlamak zorunda olduğum klavye odağı. –

İlgili konular