使用本地数据库中的更新数据重新加载LongListSelector - Windows Phone 8

时间:2015-04-22 18:31:27

标签: c# windows-phone-8 longlistselector

我的Windows Phone 8应用程序中存在longlistselector的问题。 从longlistselector中选择和编辑记录并将更改提交到本地数据库后,longlistselector不会显示更新的名称,除非您关闭并重新打开该应用程序。数据肯定正在更新,它只是没有显示。有没有办法在应用程序仍处于打开状态时选择列表?这是列表中的Xaml:

 <!--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");
                }
            }
        }

非常感谢!

1 个答案:

答案 0 :(得分:0)

在Xaml中,更改用于将名称显示为TwoWay的绑定。

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

这让xaml知道监视Name属性的InotifyPropertyChanges。