2015-10-12 3 views
7

हाय मैं विंडोज 10 में यूडब्ल्यूपी सीख रहा हूं, मुझे ग्रिड के माध्यम से स्क्रॉल करने की आवश्यकता है।स्क्रॉलव्यूयर ग्रिड पर काम नहीं कर रहा है

<Grid> 

     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

     <!-- Header --> 
     <Rectangle Grid.Row="0" Grid.ColumnSpan="3"/> 
     <TextBlock Grid.Column="1" Name="CurrentDateText" /> 


      <Button Name="NextButton" Grid.Column="2" Content="&gt;" 
        HorizontalAlignment="Right" Margin="20" 
        Click="NextButton_Click_1"/> 

          <ScrollViewer x:Name="Scroll" VerticalAlignment="Top" Grid.Row="1" VerticalScrollBarVisibility="Hidden"> 
       <Grid Grid.ColumnSpan="3" Name="Grid2"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="auto"/> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="*" /> 
        </Grid.ColumnDefinitions> 
       </Grid> 
      </ScrollViewer> 

     </Grid> 

की पहली टुकड़ा: कोड के दूसरे भाग में

<Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

     <CommandBar VerticalAlignment="Top" Grid.Row="0"> 
      <CommandBar.Content> 
       <TextBlock Name="CurrentDateText" Margin="10,10,0,0" HorizontalAlignment="Left" VerticalAlignment="Bottom" FontSize="22" FontStretch="ExtraExpanded"/> 
      </CommandBar.Content> 
      <CommandBar.PrimaryCommands> 
       <AppBarButton Name="button1" Icon="Forward" Label="button" Click="NextButton_Click_1"/> 
      </CommandBar.PrimaryCommands> 
     </CommandBar> 

      <Grid Grid.Row="1" Grid.ColumnSpan="3" Name="Grid1"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="60"/> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="*" /> 
      </Grid.ColumnDefinitions> 
     </Grid> 

       <ScrollViewer x:Name="Scroll" Grid.Row="2" VerticalAlignment="Top" VerticalScrollBarVisibility="Auto" VerticalScrollMode="Enabled"> 
      <Grid Grid.ColumnSpan="3" Name="Grid2"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="60"/> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="*" /> 
      </Grid.ColumnDefinitions> 
     </Grid> 
     </ScrollViewer> 
    </Grid> 

: वे दो कोड है बहुत समान हैं, अपने इरादे grid2 में स्क्रॉल करने के लिए, कोड की पहली टुकड़ा है कोड काम नहीं करता है, दूसरा काम करता है। मुझे समझ में नहीं आता कि क्या गलत है, मुझे समझ में नहीं आता कि यह पहले क्यों काम नहीं करता है। धन्यवाद

उत्तर

19

यह शुरुआती लोगों के लिए एक आम गलती है और आपको इसके बारे में बुरा नहीं होना चाहिए। स्क्रॉल व्यूअर के बारे में याद रखने की बात यह है कि इसकी ऊंचाई और चौड़ाई होनी चाहिए। कभी-कभी आप ऊंचाई और चौड़ाई निर्धारित करते हैं। कभी-कभी आप कंटेनर के आकार से ऊंचाई और चौड़ाई निर्धारित करते हैं। सही? इस पर

देखो:

<ScrollViewer> 
    <Grid Height="1000" /> 
</ScrollViewer> 

कि नमूने में, पुस्तक दर्शकों को कार्य जैसे कि यह वहाँ भी नहीं है जाएगा। क्यूं कर? क्योंकि इसकी ऊंचाई और चौड़ाई नहीं है। यह उस मामले में अपनी सामग्री के समान ही आकार होगा। यह मूल रूप से आप जो देख रहे हैं। इस पर

देखो:

<ScrollViewer Height="100"> 
    <Grid Height="1000" /> 
</ScrollViewer> 

यह ठीक खड़ी स्क्रॉल हैं लेकिन यह क्षैतिज स्क्रॉल कभी नहीं होगा। क्या आप देख सकते हैं क्यों? ऐसा इसलिए है क्योंकि चौड़ाई नहीं है। कभी-कभी यह एक आदर्श परिदृश्य है। लेकिन यह एक और चीज है जो एक डेवलपर ऑफ गार्ड को पकड़ सकती है। इस पर

देखो:

<StackPanel> 
    <ScrollViewer> 
     <Grid Height="1000" /> 
    </ScrollViewer> 
<StackPanel> 

यह एक और परिदृश्य है कि डेवलपर्स के एक बहुत फैल जाती है। क्यूं कर? क्योंकि एक स्टैक पैनल की ऊंचाई अनंत है। चूंकि ऊंचाई और चौड़ाई मूल रूप से कंटेनर द्वारा विरासत में प्राप्त होती है, इसलिए स्क्रॉल व्यूअर के पास स्क्रॉल करने का कोई कारण नहीं होता है क्योंकि यह पहले से ही अनंत आकार तक बढ़ने की अनुमति देता है। इस पर

देखो:

<Grid> 
    <ScrollViewer> 
     <Grid Height="1000" /> 
    </ScrollViewer> 
<Grid> 

बिल्कुल सही। अब स्क्रॉल व्यूअर स्क्रॉल करेगा जैसे आप इसे चाहते हैं क्योंकि स्क्रॉल व्यूअर की ऊंचाई और चौड़ाई ऊंचाई और उसके कंटेनर की चौड़ाई, ग्रिड द्वारा विरासत में प्राप्त होती है। और क्योंकि एक ग्रिड खिड़की के आकार के लिए खुद को बाधा डालता है, आप बहुत बड़े आकार में हैं।

आप ग्रिड के व्यवहार को निश्चित रूप से एक स्टैक पैनल में डालकर खराब कर सकते हैं! ऐसा न करें जबतक कि आप नहीं जानते कि आप क्या कर रहे हैं और क्या कर रहे हैं। यदि आप एक्सएएमएल के लिए नए हैं तो आप माइक्रोसॉफ्ट वर्चुअल अकादमी पर this free course का आनंद ले सकते हैं।

मुझे उम्मीद है कि इससे मदद मिलती है।

शुभकामनाएँ!

+2

ऐसा लगता है कि व्यवहार की उम्मीद नहीं है। – Sergei

+0

टीएलडीआर: एमएसएफटी एक अंतर्ज्ञानी नियंत्रण बनाने की तरह महसूस नहीं कर सका। –

+1

यदि केवल इतना आसान उत्तर एक निर्णय की जटिलता को प्रतिबिंबित कर सकता है। –

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