2013-07-08 90 views
0

我想從底部展開一個Windows 8 listView的方法。從本質上講,我有一個listView填充了幾個項目。我希望這些項目從listView容器的底部開始。當我添加到列表中時,我希望它們向上移動。一旦listView容器到達/填充所需的高度,我希望listView滾動條變得可用。從底部擴展listView

現在,我可以在我的屏幕底部放置一個listView,並將其設置爲僅包含我的項目的高度。但是當我添加項目時,它只是保持相同的高度並添加滾動條。如果我列出一個列表查看我想要的最終高度,只有少數項目沒有填滿整個高度,那麼我的項目從頂部開始。

任何想法,如果這是可能的?

+0

所以我知道的ListView的高度是絕對的,不會自動調整。我想要一個CSS解決方案,但JS方法可能是唯一的方法? –

回答

1

listview只支持GridLayout and ListLayout哪個佈局列表視圖內的內容使用position: absolute(在調試器中使用DOM瀏覽器可以看到)。 css或js不太可能來幫助自定義列表視圖佈局,以滿足您從底部到頂部佈局的需求。可以嘗試查看是否爲listview構建自定義佈局管理器。但afaik - 它沒有記錄。

您可能需要建立在custom winjs control。自定義控件可以使用-ms-flexbox顯示樣式(css3 flex佈局),它允許將div中的內容打包到最後。自定義控件需要綁定到dataSource,並使用給定的項目模板呈現項目。

示例:您可以看到頁面內容元素在頁面的末尾被打包。 HTML:

<div class="flexlayout fragment"> 
    <header role="banner"> 
     <button class="win-backbutton" disabled type="button"></button> 
     <h1 class="titlearea win-type-ellipsis"> 
      <span class="pagetitle">flexlayout page</span> 
     </h1> 
    </header> 
    <section role="main"> 
     <div class="content"> 
      <h3>page content goes here.</h3> 
      <h3>page content goes here.</h3> 
      <h3>page content goes here.</h3> 
     </div> 
    </section> 
</div> 

CSS:

.flexlayout.fragment .content 
{ 
    display: -ms-flexbox; 
    -ms-flex-direction: column; 
    -ms-flex-pack: end; 

} 

.fragment { 
    display: -ms-grid; 
    height: 100%; 
    width: 100%; 
} 
+0

我正在考慮在屏幕的底部放置一個listview,它只保存一個項目。然後,每次我添加一個新的項目,增加listView(通過JavaScript)的高度,直到它達到屏幕的高度,在這種情況下,我會讓滾動條激活。這會起作用嗎? –

+0

那麼我完全不用listView。對於它的價值來說太麻煩了。但我接受了你的答案,因爲如果我留在列表視圖中,我會利用你的方法。 –