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");
}
}
}
太感謝了!