Genellikle Yüklü olay işleyicisinde myControl.Focus()
numaralı telefonu arıyorum, ancak bu, özel nesneler listesine veri olan ListBox
için işe yaramaz. Uygulamama başladığımda, ListBox
'un ilk öğesi seçildi, ancak odak başka bir yerde. Veritabanını kullanıyorsa, odağı bir Yükleyiciye doğru olarak nasıl yükleyebilirim?
ctrlItemsCount
numarasını 8.
gösterdiğinden nasıl olabilir gerçekten öğesinin olmadığını göstermektedir Bu durumda ilk odağı ayarlayın ve başlangıçtaki odağı ayarlamak için doğru yer hangisidir?
private void onLoad(object sender, RoutedEventArgs e) {
if (ctrlCountries.Items.Count > 0) {
ctrlItemsCount.Text = ctrlCountries.Items.Count;
ctrlCountries.SelectedIndex = 0;
FocusManager.SetFocusedElement(this, ctrlCountries);
}
}
DÜZENLEME: gerçek ListBox
kendisi için yüklenen olaya bu kodu taşımış. Neredeyse işe yarıyor - odak şimdi ListBox
üzerinde, ancak hala madde # 0 klavye imleci var önce bir kez AŞAĞI tuşuna basmaya ihtiyacım var. Bir başka deyişle, odak veya imleç olarak, nedense 1 çentik yukarıdaki madde # 0:
private void onCountriesLoaded(object sender, RoutedEventArgs e) {
ctrlCountries.SelectedIndex = 0;
FocusManager.SetFocusedElement(this, ctrlCountries);
Keyboard.Focus();
}
Çalışıyor! Neredeyse ... "Keyboard.Focus (item); kullanırsam, gerektiği gibi% 100 çalışır." FocusManager yerine. Bu garip çünkü MSDN, FocusManager'ın mantıksal odağı ayarlayacağını ve klavye odağını ayarlamaya çalışacağını söylüyor. Keyboard.Focus'un (item) her zaman kullanmam gereken doğru dersi öğreniyor muyum? –