2011-03-29 110 views
3

我在執行動態數據透視控制時遇到了問題。 我想要做的是使用數據透視圖創建一個圖庫,在這裏你可以通過滑動來改變圖像。 這與透視控制通過在我的可觀察集合上綁定其itemsource以在每個pivotitem上顯示一個圖像本地結合使用。 問題是,當我的圖庫包含超過10張圖片時,此解決方案會佔用大量內存,因爲它會創建相同數量的pivotitems。WP7動態數據透視表

我試過被初始化我收藏有3項,當前顯示的一個,前一個和下一個,當用戶刷卡,我更新了我的名單。 我試過這個使用「SelectionChanged」事件,也與手勢監聽器..迄今沒有成功。 有沒有人試過這樣做?如果是的話,我該如何執行它?

回答

2

我做了類似的事情,但不使用Pivot控件。下載Silverlight工具包(http://silverlight.codeplex.com/)並使用GestureListener趕刷卡動作:

<toolkit:GestureService.GestureListener> 
     <toolkit:GestureListener DragCompleted="OnDrag"/> 
</toolkit:GestureService.GestureListener> 

然後在代碼中,你有一個事件處理程序,捕獲刷卡事件,並更新相應的圖像。下面是我用它來改變我的網頁事件處理程序:

private void OnDrag(object sender, DragCompletedGestureEventArgs e) 
{ 
    if (e.Direction == System.Windows.Controls.Orientation.Horizontal) 
    { 
     if (e.HorizontalChange < 0) 
     { 
      TurnPagesForward(1); 
     } 
     else 
     { 
      TurnPagesBackward(1); 
     } 
    } 
} 
+0

謝謝。我調整它添加一個動畫,以便像分頁效果。它像一個魅力! – AlexMok 2011-03-29 15:43:41

+0

太棒了!你介意發佈你的動畫嗎?我很想看看它是如何工作的,並可能在我的代碼中使用類似的東西。 – johnhforrest 2011-03-30 13:56:07

+0

你好,我面臨着完全相同的問題。如果你能分享動畫的代碼,會喜歡它嗎? – 2012-01-21 19:14:00

1

如果你更新你的列表中的項目的結合將會丟失,所以這將可能不能很好地工作。

  • 什麼可能的工作是以下(但我沒有測試過):
  • 開始與五個項目的初始集合。
  • 確保您在列表中顯示的第三個項目,使可見性項目在列表的中間。
  • 更改可見頁面時引發SelectionChanged事件。
  • 如果您向右移動,則所選索引將更改爲第四個元素。在這種情況下,您將刪除列表中的第一個元素並添加一個新的第五個元素。
  • 如果移動到左側,則做相反的操作並刪除列表中的最後一個元素。

這應確保您始終可以前後移動,而不會移除或添加任何可見物品。

我不確定這是否可行,但值得一試。 :-)

+0

謝謝你的建議,我給它一個嘗試,讓你知道 – AlexMok 2011-03-29 12:19:33

+0

「確保你的列表,以便顯示第三項可見項目位於列表中間。「我停在那裏,作爲數據透視表中的已知錯誤,不允許將選定的索引設置爲第三個元素:http://senovasolutions.com/blog/2010/11/05/WP7PivotControlSelectedIndexBug.aspx – AlexMok 2011-03-29 12:36:34

0

不要這樣做。很多人都嘗試過,並沒有擴展到大量的圖像。

雖然如果可以使用透視控制來創建簡單的圖像導航控件,那將是非常不錯的,但這並不實際。你需要用不同的方法去完成這個更復雜的過程。 (很多人嘗試過不同的方式,請選擇最適合您的需求/體驗/偏好的內容)

+0

好吧..我仍然感到驚訝的是,他們沒有想到一個組件在不增加內存消耗的情況下輕鬆實現這一點。否則,我認爲可能是一個簡單的頁面,處理手勢事件可以做到這一點。我只需要應用故事板來模擬滑動效果。 – AlexMok 2011-03-29 12:09:04

+0

@Alexbdx是的,這是一個恥辱。也許我們會在某天得到一些東西 – 2011-03-29 14:36:39