SORU
31 AĞUSTOS 2009, PAZARTESİ


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
31 AĞUSTOS 2009, PAZARTESİ


Bana üç bölümden sorunuza cevap vereyim.

  1. "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 :).

  2. 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.

  3. 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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ash100HD

    Ash100HD

    29 EKİM 2011
  • Bucky Roberts

    Bucky Robert

    9 HAZİRAN 2011
  • Cartoonium

    Cartoonium

    11 NİSAN 2011