2011-09-30 40 views

回答

4

隨着WP7沒有刷新或重新繪製的概念。 Silverlight使用保留模式圖形,其中保留和管理各種UI元素。

當您想'刷新'您的用戶界面時,您必須更改您的用戶界面元素的屬性。該框架負責在屏幕上反映這一變化。

+0

嘿什麼是你的UI元素的屬性?請你簡單解釋一下......對不起,我是新的這個平臺。 – Jeeva

1

一個很好的解決辦法是將數據在各關鍵項的內容綁定到任何單獨的視圖模式(如果你有一個網頁上的多個數據項)或可控可觀測性(列表框)

那麼只有你必須獨立地刷新屬性或視圖模型,這是通過樞軸控制上的模式數據頁進行性能(並延遲加載數據以加速顯示樞軸控制頁面)

要記住的最好事情是您不刷新數據透視表頁面,而是顯示其中的數據。

如果您想要動態控制有多少個透視項,那麼您將不得不以編程方式控制它。

+0

我想動態添加5個數據透視表項。我創建按鈕,如果我點擊按鈕重新加載所有的樞軸項代碼NavigationService.Navigate(新的Uri(NavigationService.Source +「?Refresh = true」,UriKind.Relative));我想代碼重新加載單獨的數據透視項目 – Jeeva

+0

@Darkside我正在使用你的解決方案。但是我看到這個數據透視圖只會更新屏幕上的內容! – onmyway133

0

我正在使用下一個方法:每個PivotItem是一個單獨的UserControl,它從BaseUserControl繼承。 BaseUserControl有2個抽象方法:OnPivotItemLoaded和OnSelected。

默認情況下,PivotItems是空的(或者它們可以在運行時創建,就像你的情況一樣)。 然後,當Pivot的項目被加載(只訂閱其事件),我打電話

private void PivotItemProfile_OnLoaded(object _sender, RoutedEventArgs _e) 
    { 
     SimpleLogger.WriteLine("Creating ProfileUserControl"); 
     var pivotItem = _sender as PivotItem; 
     if (pivotItem == null) return; 

     if (pivotItem.Content == null) 
      pivotItem.Content = new ProfileUserControl(); 

     var item = (pivotItem.Content as BaseUserControl); 
     if (item != null) 
      item.OnPivotItemLoaded(); 
    } 

然後,我也訂閱了Pivot的OnSelectionChanged事件:

private void PivotControl_OnSelectionChanged(object _sender, SelectionChangedEventArgs _e) 
    { 
     var pivotItem = MainPivot.SelectedItem as PivotItem; 
     if (pivotItem == null) return; 

     var item = (pivotItem.Content as BaseUserControl); 
     if (item != null) 
      item.OnPivotItemSelected(); 
    } 

所以,PivotItem內(UserControl)我可以定義,我想在這些事件中做什麼。