2011-05-12 2 views
12

सवाल दो बार पूछा गया है, दुर्भाग्यवश उत्तर केवल WPF पर लागू होते हैं। किसी को पता है कि इसे चांदी की रोशनी में कैसे पूरा किया जाए? असल में मुझे कोड से एक निश्चित टेक्स्टबॉक्स पर ध्यान केंद्रित करने की आवश्यकता है।एमवीवीएम का उपयोग कर WP7 में टेक्स्टबॉक्स को कैसे केंद्रित करें?

उत्तर

11

मैं इस दृष्टिकोण सफलतापूर्वक

http://caliburnmicro.codeplex.com/discussions/222892?ProjectName=caliburnmicro

public class FocusBehavior : Behavior<Control> 
    { 

     protected override void OnAttached() 
     { 
      AssociatedObject.GotFocus += (sender, args) => IsFocused = true; 
      AssociatedObject.LostFocus += (sender, a) => IsFocused = false; 
      AssociatedObject.Loaded += (o, a) => { if (HasInitialFocus || IsFocused) AssociatedObject.Focus(); }; 

      base.OnAttached(); 
     } 

     public static readonly DependencyProperty IsFocusedProperty = 
      DependencyProperty.Register(
       "IsFocused", 
       typeof(bool), 
       typeof(FocusBehavior), 
       new PropertyMetadata(false, (d, e) => { if ((bool)e.NewValue) ((FocusBehavior)d).AssociatedObject.Focus(); })); 

     public bool IsFocused 
     { 
      get { return (bool)GetValue(IsFocusedProperty); } 
      set { SetValue(IsFocusedProperty, value); } 
     } 

     public static readonly DependencyProperty HasInitialFocusProperty = 
      DependencyProperty.Register(
       "HasInitialFocus", 
       typeof(bool), 
       typeof(FocusBehavior), 
       new PropertyMetadata(false, null)); 

     public bool HasInitialFocus 
     { 
      get { return (bool)GetValue(HasInitialFocusProperty); } 
      set { SetValue(HasInitialFocusProperty, value); } 
     } 
    } 


<TextBox x:Name="UserName" Style="{StaticResource LoginTextBox}"> 
    <i:Interaction.Behaviors> 
    <localBehaviors:FocusBehavior HasInitialFocus="True" 
     IsFocused="{Binding UserNameIsFocused, Mode=TwoWay}"/> 
    </i:Interaction.Behaviors> 
</TextBox> 
+0

धन्यवाद का उपयोग किया है! बहुत अच्छा काम करता है। क्या इन बाइंडिंग के साथ किसी टेक्स्टबॉक्स को फ़ोकस करने का कोई तरीका है? (किसी अन्य टेक्स्टबॉक्स पर ध्यान केंद्रित किए बिना) – sust86

+0

मेरी समस्या हल हो गई। मैं अपने टेक्स्टबॉक्स के सक्षम पर बाध्यकारी का उपयोग कर रहा हूं। अक्षम करें + सक्षम करें टेक्स्टबॉक्स को फोकस करेगा। एक हैक की तरह लगता है लेकिन कोई अन्य रास्ता नहीं मिला: / – sust86

संबंधित मुद्दे