2012-05-27 115 views
0

我是Windows Phone 7.1開發新手。我在VB.NET工作。Windows Phone ListBox/ScrollView控件不會更新

我正在處理類似'How to: Create a Basic Local Database Application for Windows Phone'的應用程序。

我已經設法使用上面的示例編寫添加和刪除代碼。

但更新代碼...當我返回到顯示所有數據的頁面時,它不會使用新信息進行更新。信息是保存(提交),因爲當我在單獨的頁面中查看記錄詳細信息時,它們就在那裏。

其中顯示所有數據的XAML頁面的代碼是這樣的:

<ScrollViewer Margin="12,148,12,90" Name="scrollViewerVendors"> 
     <ItemsControl ItemsSource="{Binding AllVendors}"> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <Border BorderThickness="1" CornerRadius="12" Margin="2"> 
         <Grid> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="*" /> 
           <RowDefinition Height="*" /> 
          </Grid.RowDefinitions> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="*" /> 
           <ColumnDefinition Width="Auto" /> 
           <ColumnDefinition Width="Auto" /> 
          </Grid.ColumnDefinitions> 
          <StackPanel Grid.Row="0" Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center"> 
           <TextBlock Text="{Binding Name}" FontSize="28" /> 
          </StackPanel> 
          <StackPanel Grid.Row="1" Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center"> 
           <TextBlock Text="{Binding Address}" /> 
          </StackPanel> 
          <Button Grid.Row="0" Grid.Column="1" Grid.RowSpan="2" 
           x:Name="EditVendorButton" 
           BorderThickness="1" 
           Click="EditVendorButton_Click"> 
           <Image Source="/Images/AppBar/appbar.edit.rest.png" /> 
          </Button> 
          <Button 
           Grid.Row="0" Grid.Column="2" Grid.RowSpan="2" 
           x:Name="DeleteVendorButton" 
           BorderThickness="1" 
           Click="DeleteVendorButton_Click"> 
           <Image Source="/Images/AppBar/appbar.delete.rest.png" /> 
          </Button> 
         </Grid> 
        </Border> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 
    </ScrollViewer> 

我已經寫在編輯頁面的更新代碼:

Using DemoAppDB As New DemoAppContext.DemoAppContext("Data Source=isostore:/DemoApp.sdf") 
      Dim CurrentVendor = From VendorDetails In DemoAppDB.Vendors Where VendorDetails.VendorID = CInt(sVendorID) Select VendorDetails 

      For Each Vendor In CurrentVendor 
       Vendor.Name = TextBox1.Text 
       Vendor.Address = TextBox2.Text 
       Vendor.ContactPerson = TextBox3.Text 
       Vendor.Phone = TextBox4.Text 
       Vendor.Email = TextBox5.Text 
       Vendor.Notes = TextBox6.Text 
      Next 
      'Save changes to the database 
      DemoAppDB.SubmitChanges() 
     End Using 

的廠商ID是順利通過betweend頁。我查過了。

數據庫更新,但我似乎無法獲得更新ScrollView記錄。我也嘗試了一個ListView控件..相同的結果。

模型類實現INotifyPropertyChanged,INotifyPropertyChanging。 viewmodel類實現INotifyPropertyChanged。

如果您需要任何其他細節,請問我。謝謝您閱讀此篇!

回答

0

有過看看教程我說你已經錯過了斷

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
{ 
// Define the query to gather all of the to-do items. 
var toDoItemsInDB = from ToDoItem todo in toDoDB.ToDoItems 
        select todo; 

// Execute the query and place the results into a collection. 
ToDoItems = new ObservableCollection<ToDoItem>(toDoItemsInDB); 

    // Call the base method. 
    base.OnNavigatedTo(e); 
} 

地方,你,你會更新AllVendors。

這裏發生的事情是,在應用程序導航回主頁面後,它重新加載了保存數據的ObservableCollection。

+0

我已經解決了通過在更新後添加NotifyPropertyChanged(「AllVendors」)來刷新ObservableCollection。 – milo2011

+0

更新在另一個頁面中進行,然後返回列表頁面,其中顯示所有供應商。在這種情況下,你是否可以使用OnNavigatedTo或OnNavigatedFrom?按照示例, – milo2011

+0

可能是OnNavigatedTo –