Görünümü model WPF textbox odağı ayarlayın (C#)
TextBox
ve benim görüşüme Button
var.
Şimdi düğmesi üzerine durumu kontrol ediyorum ve eğer bu durumu yanlış, kullanıcı iletisini görüntülemek için döner, ve sonra metin kutusu denetimi için bir imleç için de var.
if (companyref == null)
{
Lipper.Nelson.AdminClient.Main.Views.ContactPanels.CompanyAssociation cs = new Lipper.Nelson.AdminClient.Main.Views.ContactPanels.CompanyAssociation();
MessageBox.Show("Company does not exist.", "Error", MessageBoxButton.OK,
MessageBoxImage.Exclamation);
cs.txtCompanyID.Focusable = true;
System.Windows.Input.Keyboard.Focus(cs.txtCompanyID);
}
Yukarıdaki kod görünümü modeli.
Bu CompanyAssociation görünüm adı.
Ama imleç TextBox
yer almıyor.
Xaml altında
<igEditors:XamTextEditor KeyDown="xamTextEditorAllowOnlyNumeric_KeyDown"
Name="txtCompanyID" ValueChanged="txtCompanyID_ValueChanged" Text="{Binding
Company.CompanyId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="{Binding
ActualWidth, ElementName=border}" Grid.Column="1" Grid.Row="0"
VerticalAlignment="Top" Margin="0,5,0,0" HorizontalAlignment="Stretch"
IsEnabled="{Binding Path=IsEditable}" />
<Button Template="{StaticResource buttonTemp1}" Command="{Binding ContactCommand}"
CommandParameter="searchCompany" Content="Search" Width="80" Grid.Column="2"
Grid.Row="0" VerticalAlignment="Top" Margin="0" HorizontalAlignment="Left"
IsEnabled="{Binding Path=IsEditable}" />
Yardım lütfen
CEVAP
Bana üç bölümden sorunuza cevap vereyim.
"Cs.ne olduğunu merak ediyorum"örneğin? txtCompanyİD Bir TextBox denetimi mi? Evet, o zaman yanlış bir yolda. Genellikle konuşma ViewModel UI herhangi bir referans olması iyi bir fikir değil. Sorarsın "Neden?" ama bu yazı bir başka soru üzerine Stackoverflow :).
Odak sorunları bulmanın en iyi yolu... hata ayıklama .Net kaynak kodu. Şaka yapmıyorum. Beni çok zaman bir çok kez kurtardı. Etkinleştirmek için .net kaynak kodu hata ayıklama Shawn Bruke's blog bakın.
Son olarak, ViewModel, odağı ayarlamak için kullandığım genel yaklaşım Özellikleri Eklenmiş. Herhangi bir Uıelement ayarlanabilir çok basit bağlı özellik, yazdım. Ve ViewModel özellik "" örneğin. İsFocused bağlı olabilir İşte burada:
public static class FocusExtension { public static bool GetIsFocused(DependencyObject obj) { return (bool)obj.GetValue(IsFocusedProperty); } public static void SetIsFocused(DependencyObject obj, bool value) { obj.SetValue(IsFocusedProperty, value); } public static readonly DependencyProperty IsFocusedProperty = DependencyProperty.RegisterAttached( "IsFocused", typeof(bool), typeof(FocusExtension), new UIPropertyMetadata(false, OnIsFocusedPropertyChanged)); private static void OnIsFocusedPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var uie = (UIElement) d; if ((bool)e.NewValue) { uie.Focus(); // Don't care about false values. } } }
Şimdi sizin görüşünüze göre (XAML) ViewModel bu özelliği bağlayabilirsiniz:
<TextBox local:FocusExtension.IsFocused="{Binding IsUserNameFocused}" />
Umarım bu yardımcı olur :). Cevap #2 bakın).
Şerefe.
Android - bir düğme widget odağı Ayarl...
Nasıl Win TextBox odağı kaldırmak için...
Nasıl ASP.NET MVC HTML Yardımcısı Text...
Bir android uygulaması ilk odağı ayarl...
jQuery textbox change olayı'textb...