2015-04-22 93 views
1

我的Windows Phone 8應用程序中的longlistselector出現問題。 從longlistselector中選擇並編輯記錄並將更改提交到本地數據庫後,除非關閉並重新打開應用程序,否則longlistselector不會顯示更新的名稱。數據絕對正在更新,但沒有顯示。有沒有辦法讓應用程序仍然打開時選擇列表?這是Xaml的清單:用本地數據庫更新的數據重新加載LongListSelector - Windows Phone 8

<!--ContentPanel - place additional content here--> 
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
     <phone:LongListSelector x:Name="llsModules" 
           Margin="0,0,-12,0" 
           ItemsSource="{Binding Modules}" 
           SelectionChanged="llsModules_SelectionChanged"> 
      <phone:LongListSelector.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Margin="0,0,0,17"> 
         <StackPanel Orientation="Horizontal"> 
          <Grid HorizontalAlignment="Stretch" Width="420" >        
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="*" /> 
            <ColumnDefinition Width="100"/> 
            <ColumnDefinition Width="100"/> 
           </Grid.ColumnDefinitions> 
          <TextBlock Text="{Binding Name,StringFormat='Name: {0}'}" 
           TextWrapping="Wrap" 
           MaxWidth="300" 
           Style="{StaticResource PhoneTextLargeStyle}" 
             HorizontalAlignment="Left" 
             Grid.Row="1" 
             /> 
          </Grid> 
         </StackPanel> 

而這就是背後的代碼。

public ModulePage() 
    { 
     InitializeComponent();   
     DataContext = App.ViewModel; 
    } 

    protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     App.ViewModel.LoadModulesData(); 
     llsModules.ItemsSource = App.ViewModel.Module;    
    } 

    private void llsModules_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (llsModules.SelectedItem == null) 
      return; 

     NavigationService.Navigate(new Uri("/ModuleDetails.xaml?moduleid=" + (llsModules.SelectedItem as Modules).Id, UriKind.Relative)); 

    } 

這就是數據模型

[Table(Name = "Modules")] 
    public class Modules : INotifyPropertyChanged, INotifyPropertyChanging 
    { 
     public Modules() 
     { 
     } 

     private int _id; 
     [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)] 
     public int Id 
     { 
      get 
      { 
       return _id; 
      } 
      set 
      { 
       if (_id != value) 
       { 
        NotifyPropertyChanging("Id"); 
        _id = value; 
        NotifyPropertyChanged("Id"); 
       } 
      } 
     } 

     private string _name; 
     [Column(DbType = "nvarchar(255)", CanBeNull = false)] 
     public string Name 
     { 
      get 
      { 
       return _name; 
      } 
      set 
      { 
       if (value == "") 
        throw new Exception("Module Name is a required field"); 

       if (_name != value) 
       { 
        NotifyPropertyChanging("Name"); 
        _name = value; 
        NotifyPropertyChanged("Name"); 
       } 
      } 
     } 

太感謝了!

回答

0

在Xaml中,將用於顯示名稱的綁定更改爲TwoWay

Text="{Binding Name, Mode=TwoWay, StringFormat='Name: {0}'}" 

這讓XAML知道監視Name財產InotifyPropertyChanges。