2013-07-10 3 views
8

दिखाई देता है, जबकि मैं एक साधारण चैट ऐप बना रहा हूं, इसके बाद मुझे कोड के साथ दो मुद्दों का सामना करना पड़ रहा है। कोड पृष्ठ के शीर्ष पर एक टेक्स्टब्लॉक दिखाता है और नीचे दो टेक्स्टबॉक्स स्टैक दिखाता है। इसके अलावा एक सूची बॉक्स जो शेष अंतर को भरने के लिए ऑटो ऊंचाई होगी।विंडोज फोन आइटम स्क्रॉल समस्या जबकि एसआईपी कीबोर्ड

<Grid x:Name="LayoutRoot" Background="Transparent"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="1*"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 
     <Rectangle Height="1" Fill="White" VerticalAlignment="Top"/> 
     <TextBlock Text="Hello World!" Grid.Row="0" FontSize="36"/> 
     <Listbox Grid.Row="1"/> 
     <TextBox Grid.Row="2"/> 
     <TextBox Grid.Row="3"/> 
</Grid> 
  1. जब मैं शीर्ष बक्सें में से एक पर क्लिक करें, एसआईपी कुंजीपटल दिखाई देने लगता है और पेज में सभी सामग्री को धक्का दिया है। यहां मुख्य मुद्दा यह है कि शीर्ष टेक्स्टब्लॉक गायब हो जाता है और शीर्ष पर छिपा रहता है। एसआईपी कीबोर्ड को देखते हुए मैं इसे शीर्ष पर कैसे रख सकता हूं और आगे नहीं बढ़ सकता?

  2. जब सबसे नीचे टेक्स्टबॉक्स फोकस करता है, तो एसआईपी कीबोर्ड प्रकट होता है और सभी सामग्री को धक्का देता है। इस मामले में, कीबोर्ड बस फिट होगा और उस टेक्स्टबॉक्स पर चिपचिपा होगा। हालांकि, जब अन्य टेक्स्टबॉक्स फोकस करता है, तो कीबोर्ड उनके बीच एक अंतर बना देगा। कुंजीपटल व्यवहार कैसे कर सकता है जैसा कि सबसे नीचे एक केंद्रित है जब यह करता है?

+0

[विंडोज फोन 7 कीबोर्ड आकार] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/4399153/windows-phone-7-keyboard-size) – SandRock

उत्तर

1

जब कुंजीपटल पॉप और unpops, PhoneApplicationFrame पर एक TranslateTransform रन पूरे स्क्रीन ऊपर और नीचे अनुवाद।

this article पर आधारित, आपको अनुवाद का मूल्य प्राप्त करने में सक्षम होना चाहिए। जैसा कि आप एक एनीमेशन देख सकते हैं Y शून्य से संपत्ति को एक विशिष्ट नकारात्मक मान (उस नियंत्रण के आधार पर जिस पर आपने ध्यान केंद्रित किया है) पर आधारित है।

विकल्प 1: मैं इस मूल्य को संभालने का एक मूल तरीका लिखने में सक्षम नहीं हूं लेकिन आप स्क्रीन के बाईं ओर फिट होने के लिए अपने नियंत्रण का आकार बदलने में सक्षम होना चाहिए।

विकल्प 2.0 (खराब): आप इस एनीमेशन को रद्द या हटा सकते हैं। कुंजीपटल बिना किसी आंदोलन के स्क्रीन पर शीर्ष पर होगा। शेष स्थान को फिट करने के लिए अब आपके नियंत्रण को स्थानांतरित/आकार बदलने के लिए आपकी बारी।

public MainPage() 
    { 
     this.InitializeComponent(); 

     PhoneApplicationFrame frame = (App.Current as App).RootFrame; 
     var group = (frame.RenderTransform as TransformGroup); 
     group.Children.RemoveAt(0); // remove translate transform 
    } 

विकल्प 2.1: 2.0 के साथ कोई समस्या है: ट्रांसफॉर्म को हटाने से आपको कीबोर्ड के बारे में अधिसूचित होने से रोका जाएगा। आपके पृष्ठ के बच्चे पर एक रिवर्स एनीमेशन सेट अप करते समय वाई प्रॉपर्टी चेंज मूल अनुवाद को "रद्द करना" होगा।

<Grid x:Name="LayoutRoot" Background="Transparent" VerticalAlignment="Stretch"> 
    <Grid.RenderTransform> 
     <TransformGroup> 
      <TranslateTransform /> 
     </TransformGroup> 
    </Grid.RenderTransform> 

    static void OnRootFrameTransformChanged(DependencyObject source, DependencyPropertyChangedEventArgs e) 
    { 
     // ... edit from the blog article ... 
     MainPage page = source as MainPage; 
     page.lb.Items.Add(newvalue); 
     var oppositeTransform = (TranslateTransform)((TransformGroup)page.RenderTransform).Children[0]; 
     if (newvalue < 0.0) 
     { 
      page.IsSipVisibleGuess.IsChecked = true; 
      oppositeTransform.Y = -newvalue; 
     } 
     else if (newvalue == 0.0) 
     { 
      page.IsSipVisibleGuess.IsChecked = false; 
      oppositeTransform.Y = 0; 
     } 

मैं इन विकल्पों में से कोई भी खेद जादुई समस्या का समाधान होगा हूँ, लेकिन यह आप कोड अपने ऐप्लिकेशन के लिए सबसे अच्छा फिट बैठता है मदद मिल सकती है।

यदि आपको इससे बेहतर समाधान मिलता है, तो कृपया इसे उत्तर के रूप में पोस्ट करें।

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