2012-06-21 13 views
7

में आइटम के ग्रिड व्यू समूह के अंदर वर्टिकल स्क्रॉलिंग मैं WinRT XAML ऐप में आइटम्स के विभिन्न सेटों के समूहों को प्रदर्शित करने के लिए ग्रिड व्यू का उपयोग कर रहा हूं। सबकुछ अच्छी तरह से काम करता है, सिवाय इसके कि आइटम्सपैनेल टेम्पलेट एक रैपिंग ग्रिड का उपयोग करता है जो अंतरिक्ष से बाहर होने पर मेरे आइटम को लंबवत रूप से ढेर करता है।WinRT XAML

तो, मैं StackPanel उपयोग करने के लिए, इस तरह की कोशिश की:

<GroupStyle.Panel> 
    <ItemsPanelTemplate> 
     <StackPanel Orientation="Vertical" Visibility="Visible" /> 
    </ItemsPanelTemplate> 
</GroupStyle.Panel> 

आइटम खड़ी खड़ी दिखती हैं, और कहा कि बहुत अच्छा है, लेकिन समस्या यह है कि मैं उन्हें स्क्रॉल नहीं कर सकते हैं और वे नहीं है स्क्रीन पर फिट तो मैंने लंबवत स्क्रॉलिंग को सक्षम करने का प्रयास किया:

<GroupStyle.Panel> 
    <ItemsPanelTemplate> 
     <StackPanel Orientation="Vertical" Visibility="Visible" 
        ScrollViewer.VerticalScrollBarVisibility="Visible" 
        ScrollViewer.VerticalScrollMode="Enabled"/> 
    </ItemsPanelTemplate> 
</GroupStyle.Panel> 

लेकिन यह काम नहीं करता है। ग्रिड व्यू समूह के अंदर लंबवत स्क्रॉलिंग को पूरा करने के लिए कोई सुझाव?

संपादित करें 1:

मैं भी इस की कोशिश की है:

<GroupStyle.Panel> 
    <ItemsPanelTemplate> 
     <ScrollViewer VerticalScrollBarVisibility="Visible" 
         HorizontalScrollMode="Disabled" 
         ZoomMode="Disabled" 
         VerticalScrollMode="Enabled"> 
       <StackPanel Orientation="Vertical" Visibility="Visible" /> 
     </ScrollViewer> 
    </ItemsPanelTemplate> 
</GroupStyle.Panel> 

यह डिबगर टूट जाता है के रूप में ItemsPanelTemplate एक बच्चे के रूप में एक पैनल की जरूरत है।

उत्तर

8

ठीक है, मैं अंत में इसे हल! जिसे यह चिंता का विषय हो सकता है के लिए:

<GroupStyle.ContainerStyle> 
    <Style TargetType="GroupItem"> 
     <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="GroupItem"> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"/> 
         <RowDefinition Height="*"/> 
        </Grid.RowDefinitions> 
        <ContentPresenter Content="{TemplateBinding Content}" Grid.Row="0"/> 
        <ItemsControl x:Name="ItemsControl2" ItemsSource="{Binding GroupItems}" Grid.Row="1"> 
         <ItemsControl.Template> 
         <ControlTemplate> 
          <ScrollViewer x:Name="ScrollViewer" VerticalScrollBarVisibility="Hidden"             VerticalScrollMode="Enabled" HorizontalScrollBarVisibility="Disabled"             HorizontalScrollMode="Disabled"> 
          <ItemsPresenter /> 
          </ScrollViewer> 
         </ControlTemplate> 
         </ItemsControl.Template> 
        </ItemsControl> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
     </Setter> 
    </Style> 
</GroupStyle.ContainerStyle> 

यह महत्वपूर्ण है कि आप ग्रिड का उपयोग सुनिश्चित करें ScrollViewer मापता है कि सही ढंग से बनाने के लिए।

+0

आपका स्क्रॉलव्यूवर सही तरीके से स्केल कैसे कर रहा है! मैंने एक ग्रिड के अंदर क्षैतिज प्रवाह के साथ एक सूची दृश्य रखा। व्यक्तिगत स्तंभों की बजाय मेरी पूरी सूची दृश्य स्क्रॉल। – akshay2000

+0

अच्छा, हाँ। यही वह है जो आपको करना है। मूल रूप से अपने स्क्रॉलव्यूअर को ग्रिड में डॉक करें ताकि इसकी ऊंचाई सेट हो और आप इसके अंदर स्क्रॉल कर सकें। –

+0

XamlCompiler चेतावनी WMC1500: 'कंटेनर स्टाइल' को बहिष्कृत किया गया है: कंटेनर स्टाइल को विंडोज 8.1 के बाद रिलीज़ के लिए बदला या अनुपलब्ध किया जा सकता है, और आइटम्स कंट्रोल.ग्रुप स्टाइल के लिए समर्थित नहीं है। – Bos

0

मैं आपके तत्वों को सीधे स्क्रॉल व्यूअर के अंदर रखूंगा। इस तरह:

<GroupStyle.Panel> 
<ItemsPanelTemplate> 
     <ScrollViewer VerticalScrollBarVisibility="Visible" HorizontalScrollMode="Disabled" ZoomMode="Disabled" VerticalScrollMode="Enabled"> 
      <StackPanel Orientation="Vertical" Visibility="Visible" /> 
     </ScrollViewer> 
</ItemsPanelTemplate> 

मुझे आशा है कि इस मदद करता है, लांस

+2

आपकी प्रतिक्रिया के लिए धन्यवाद। मैंने भी कोशिश की है। यह डीबगर को तोड़ता है, क्योंकि आइटमपेनल टेम्पलेट को एक बच्चे के रूप में पैनल की आवश्यकता होती है। –

+0

क्या होगा यदि आप स्क्रॉलव्यूअर को पकड़ने के लिए अतिरिक्त बफर ग्रिड या स्टैकपैन डालते हैं। यह टेम्पलेट को संतुष्ट करना चाहिए और फिर भी उपयोगकर्ता को समान दिखाना चाहिए। आइटमपेनल टेम्पलेट> स्टैकपैन> स्क्रॉलव्यूअर> स्टैकपैन –

+0

@LanceMcCarthy यह या तो काम नहीं करेगा। आपको अभी भी डीबगर ब्रेक मिलेगा। – akshay2000

2

इसके बारे में क्या?
आइटम 1 आइटम 2
आइटम 3 आइटम 4

<ListView Width="200"> 
    <ListBoxItem> 
     <TextBlock>Item 1</TextBlock> 
    </ListBoxItem> 
    <ListBoxItem> 
     <TextBlock>Item 2</TextBlock> 
    </ListBoxItem> 
    <ListBoxItem> 
     <TextBlock>Item 3</TextBlock> 
    </ListBoxItem> 
    <ListBoxItem> 
     <TextBlock>Item 4</TextBlock> 
    </ListBoxItem> 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapGrid Orientation="Horizontal"/> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
</ListView> 
0

तुम भी अक्षम पर ScrollViewer :)

सादर

की ZoomMode सेट करना चाहता है हो सकता है:

यह इस तरह के तत्वों renders