繁体   English   中英

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

[英]Reload LongListSelector with updated data from local database - Windows Phone 8

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

非常感谢!

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM