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

  • BroadCity

    BroadCity

    10 ŞUBAT 2010
  • KIT KAT

    KIT KAT

    3 EKİM 2005
  • tychoadragmire

    tychoadragmi

    20 Mart 2006