系统相关
首页 > 系统相关> > c# – 如何在Windows8应用程序中刷新页面和内容

c# – 如何在Windows8应用程序中刷新页面和内容

作者:互联网

所以我有一个Windows 8应用程序,我在其中设置一些数据到defaultViewModel.我的问题是,在页面创建之后,我向数据添加了一些内容,如何刷新页面并显示所做的更改?

    protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
    {            
        //inital load
        var DataGroups = SampleDataSource.GetGroups((String)navigationParameter);
        this.DefaultViewModel["Items"] = DataGroups;           
    }
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        //when the page is navigated back to after making changes to sampledatasource
        base.OnNavigatedTo(e);
        this.DefaultViewModel.Clear();
        var DataGroups = SampleDataSource.GetGroups("AllGroups");
        this.DefaultViewModel["Items"] = DataGroups;           
    }

在下次打开应用程序并重新加载页面时,我所做的更改不会反映出来.
这是视图模型:

    protected IObservableMap<String, Object> DefaultViewModel
    {
        get
        {
            return this.GetValue(DefaultViewModelProperty) as IObservableMap<String, Object>;
        }

        set
        {
            this.SetValue(DefaultViewModelProperty, value);
        }
    }

这是我想要更新的列表视图:

<ListView
    x:Name="itemListView"
    AutomationProperties.AutomationId="ItemsListView"
    AutomationProperties.Name="Items"
    TabIndex="1"
    Grid.Row="1"
    Visibility="Collapsed"
    Margin="0,-10,0,0"
    Padding="10,0,0,60"
    ItemsSource="{Binding Source={StaticResource itemsViewSource}}"
    ItemTemplate="{StaticResource Standard80ItemTemplate}"
    SelectionMode="None"
    IsSwipeEnabled="false"
    IsItemClickEnabled="True"
    ItemClick="ItemView_ItemClick"/>

与此相关:

<CollectionViewSource
    x:Name="itemsViewSource"
    Source="{Binding Items}"
    d:Source="{Binding AllGroups[0].Items, Source={d:DesignInstance Type=data:SampleDataSource, IsDesignTimeCreatable=True}}"/>

msdn功能:

public void NotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this,
                    new PropertyChangedEventArgs(propertyName));
            }
        }

解决方法:

查看BindableBase类代码,如果使用模板(Blank App模板除外),通常会在Windows 8 Store项目的Common文件夹中创建该类代码.如果您的起点是空白应用程序模板,则可以创建新的BasicPage,Visual Studio将询问您是否要包含公用文件.

基本上,这个想法是这样的:

>您实现了INotifyPropertyChanged接口
>创建自定义PropertyChanged事件
>在为属性设置新值后,您将调用this.OnPropertyChanged(propertyName),它将为该属性发出change事件.然后将通知控件属性已更改,并将使用新值自动更新.

标签:c,windows-8,page-refresh
来源: https://codeday.me/bug/20190625/1288148.html