2012-10-22 79 views
1

我有一個WinRT內的場景,我有一個標準的gridview以水平方式顯示內容 - 通常的WinRT scrollviewer在這裏爲屏幕右側出現的內容踢這裏,所以我們可以按照許多WinRT應用程序「向左滑動」。Gridviewitem中的嵌套滾動查看器

我在XAML gridviewitems的DataTemplate如下:

  <DataTemplate> 
       <Grid Background="White" Margin="0,0,1,1"> 
        <ScrollViewer Grid.Column="3" Width="200"> 
         <ListView Width="600" Height="170" Margin="0" Padding="10" ItemsSource="{Binding Path=ProductListItems}"> 
          <ListView.ItemTemplate> 
           <DataTemplate> 
            <Image Source="{Binding Path=LargeImage}" Width="200" Height="150" Stretch="UniformToFill"/> 
           </DataTemplate> 
          </ListView.ItemTemplate> 
         </ListView> 
        </ScrollViewer> 
       </Grid> 
      </DataTemplate> 

正如我希望你可以從源頭上看到,模板項目試圖顯示存儲listviewer裹着的ScrollViewer內的圖像(約3所示在任何時候)任何溢出的圖像可以在滾動查看器內滑動。

問題是,主父Gridview偷取所有輸入,並且任何滑動(即使放置在模板化的listview滾動查看器中)都未註冊。

任何人有任何想法如何覆蓋這種默認行爲,並在我的控制內有2種類型的滾動?

感謝,

回答

1

我覺得一個ScrollViewer中的IsHorizontalScrollChainingEnabled屬性可以幫助你做你想做的,而是說 - 你永遠不應該做你正在嘗試做的,因爲這是一個非常糟糕的設計。切勿將GridView或ListView放入ScrollViewer中,也不要將其中任何一個嵌套在一起。如果您想提供一種方式來查看比適合GridView更多的內容 - 您應該允許導航到另一個可以讓您看到它的頁面。在你的情況下 - 你試圖在GridView裏面的ScrollViewer中嵌套一個ListView,這意味着你在可視樹中嵌套了3個ScrollViewer,這是雙重的。

+0

感謝您的回覆菲利普。該設計是圖像的滾動「窗口」 - 顯示3張圖像,但列表中可能有20個圖像,因此列表視圖是父級網格視圖中存在的項目。採用WinRT中的flipview控件 - 通常可以在列表控件中使用,而非類似,只是它只顯示1個圖像。我認爲你的規則可能有例外!無論如何,我的問題是由打破數據模式樣式的設計師造成的,但IsHorizo​​ntalScrollChainingEnabled是正確的行爲,我會接受您的答案。 –

+0

嗯,我不是設計師,這些都不是我的規定。我真的不認爲這些規則 - 更像指導方針,所以這是你的腳 - 做適合你的方法。 :) –