2009-11-02 10 views
6

ठीक है, यह मूर्खतापूर्ण लग रहा है, लेकिन मुझे स्क्रॉलव्यूयर ठीक से काम करने के लिए नहीं मिल रहा है। मैं क्या करने की जरूरतस्क्रॉलव्यूयर स्वचालित रूप से स्क्रॉल करने के लिए ऊंचाई जब पृष्ठ

  1. HTML पृष्ठ

  2. एक ऊँचाई = 160px Sliverlight पेज के शीर्ष भाग पर नियंत्रण है की एक Silverlight पेज उपयोग 100% चौड़ाई/ऊंचाई है, तो है बाकी (100% - 160 पीएक्स) गतिशील रूप से बदलती सामग्री के साथ एक स्क्रॉलव्यूयर बनें।

तो HTML पृष्ठ में मेरे पास है:

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> 
तो XAML में

:

<Grid x:Name="LayoutRoot" Height="Auto"> 
     <StackPanel Orientation="Vertical" Height="Auto">   
      <App:ASilverlightControl x:Name="Header" Height="160"/> 
      <ScrollViewer Name="svw" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Visible" Height="Auto" > 
       <StackPanel Orientation="Vertical" x:Name="DynamicContentHere"> 
       </StackPanel>             
      </ScrollViewer> 
     </StackPanel>  
    </Grid> 

अब, कोई फर्क नहीं पड़ता कि मैं क्या करने की कोशिश, ScrollViewer alway का विस्तार होगा/अनुबंध करने के लिए स्टैकपैनल में सभी तत्व शामिल हैं, भले ही इसका मतलब स्क्रीन के नीचे बहती है लेकिन कोई ऊर्ध्वाधर स्क्रॉलबार नहीं है।

एकमात्र तरीका यह है कि मैं इसे काम करने के लिए प्राप्त कर सकता हूं ऊंचाई = 800 को स्क्रॉल व्यूअर पर सेट करना है।

उत्तर

18

यदि आप स्टैकपैनर के अंदर स्क्रॉलव्यूयर डालते हैं तो यह कभी काम नहीं करेगा। StackPanel हमेशा उस स्थान की अनुमति देगा जो स्क्रॉलव्यूयर की सामग्री की आवश्यकता है।

आप के बजाय दो पंक्तियों के साथ एक ग्रिड का उपयोग करना चाहिए:

<Grid x:Name="LayoutRoot" Height="Auto"> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="160"/> 
    <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <App:ASilverlightControl x:Name="Header" Grid.Row="0"/> 
    <ScrollViewer Name="svw" Grid.Row="1" 
    HorizontalScrollBarVisibility="Disabled" 
    VerticalScrollBarVisibility="Visible"> 
    <StackPanel Orientation="Vertical" x:Name="DynamicContentHere"> 
     ... 
    </StackPanel>             
    </ScrollViewer> 
</Grid> 

दूसरा RowDefinition स्वचालित रूप से ScrollViewer जितना संभव हो उतना भरने, लेकिन अभी भी यह अपने दृश्य क्षेत्र के अंदर रखने के लिए और इसलिए कर अपने ScrollViewer कर देगा में * काम।

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