だから私は、いくつかのデータを defaultViewModel に設定する Windows 8 アプリを持っています。私の質問は、ページが作成された後、データに何かを追加した後、ページを更新して変更を表示するにはどうすればよいですか?
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));
}
}