静的クラスのリポジトリとして機能する静的 IList があります。
//静的クラスの設定
public static IList RecentSearchedRepo = new ObservableCollection<object>();
UIグリッドをバインドする別のクラスにあるIList:
//コンポーネント クラス
private IList recentsearch = new ObservableCollection<object>();
public IList RecentSearch
{
get
{
return recentsearch;
}
set
{
recentsearch = value;
RaisePropertyChanged("RecentSearch");
}
}
オブジェクトを RecentSearchedRepo に追加します。
RecentSearchedRepo.add(searchitem)
次に、RecentSearch を静的リストに設定します
RecentSearch = Settings.RecentSearchedRepo;
XAML スニペット:
<GridLayout:RecentSearchGrid x:Name="recentSearchGrid" ItemsSource="{Binding RecentSearch}" />
UserControl を拡張する RecentSearchGrid クラスのスニペット:
public IList ItemsSource
{
get
{
return GetValue(ItemsSourceProperty) as IList;
}
set
{
SetValue(ItemsSourceProperty, value);
}
}
private static readonly DependencyProperty ItemsSourceProperty =
DependencyProperty.Register("ItemsSource", typeof(IList), typeof(RecentSearchGrid), new PropertyMetadata(null, OnItemsSourcePropertyChanged));
private static void OnItemsSourcePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
RecentSearchGrid source = d as RecentSearchGrid;
if (source != null)
{
source.setListforgrid(source.ItemsSource);
}
}
問題は、最初の項目を UI に追加するRecentSearchedRepo
と更新されますが、その後追加するたびに UI が更新されないことです。