我有一個靜態的IList充當靜態類的存儲庫:爲什麼不通過RaisePropertyChanged進行UI更新?
//靜態類設置
public static IList RecentSearchedRepo = new ObservableCollection<object>();
,位於我結合我的UI格到另一個階級一個IList:
//組件類
我對象添加到RecentSearchedRepo:
RecentSearchedRepo.add(searchitem)
然後設置RecentSearch到靜態列表
RecentSearch = Settings.RecentSearchedRepo;
XAML片段:從RecentSearchGrid類
<GridLayout:RecentSearchGrid x:Name="recentSearchGrid" ItemsSource="{Binding RecentSearch}" />
片斷延伸用戶控件:
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);
}
}
是該問題時,我將第一項添加到RecentSearchedRepo
UI已更新,但是在隨後的每一次添加中,UI都不會更新。
你有沒有想過將公共靜態IList改爲受保護的靜態IList,這也是一個winform或asp.net ..? – MethodMan
@DJKRAZE,C#。不是基於表單或網絡的。該代碼旨在在XBOX控制檯上運行。另外,從公開到保護的變化在綁定時也會產生影響。 – Fabii
當您設置新列表時,而不是當前列表被修改時,您當前正在引發該事件。收藏被修改時,您需要觸發適當的事件。 – Servy