winrtのプログラミングには初めてです。 VS2015を使用して、ObservableCollectionでいくつかのテストを行い、コレクションの変更がUIにどのように反映されたかを確認しています。私は間違って何かをしているに違いない。何が分からないのか。ObservableCollection - データセットの変更が更新されない
これは私のモデルである:MainPage.xamlをオン
class MyItems
{
public int ItemID { get; set; }
public string ItemDescription { get; set; }
}
class MyItemList:List<MyItems>
{
public MyItemList()
{
Random r = new Random(DateTime.Now.Day);
for (int i = 0; i < r.Next(10)+1; i++)
{
this.Add(new MyItems() { ItemID = i + 1,
ItemDescription = string.Format("Item_{0}", i + 1) });
}
}
public ObservableCollection<MyItems> getEven()
{
return new ObservableCollection<MyItems>(this.Where(x=>x.ItemID%2==0).ToList());
}
public void AddMoreItems(int v)
{
int total = this.Count;
for (int i = 0 ; i < v; i++)
{
this.Add(new MyItems() { ItemID = total + i, ItemDescription = string.Format("Item_{0}", total+i) });
}
}
}
、私はリストに項目を追加するためのボタンがあります。プログラムでリストビューを作成し、データセットに2つの方法でバインドしました。
public sealed partial class MainPage : Page
{
static MyItemList myItems = new MyItemList();
public MainPage()
{
this.InitializeComponent();
var t = myItems.getEven();
ListView myListView = new ListView() { ItemTemplate = (DataTemplate)Resources["myItemTemplate"] };
myListView.DataContext = t;
var binding = new Binding();
binding.Source = t;
binding.Mode = BindingMode.TwoWay;
myListView.SetBinding(ListView.ItemsSourceProperty, binding);
MyGrid.Children.Add(myListView);
}
private void AddItems_Click(object sender, RoutedEventArgs e)
{
myItems.AddMoreItems(3);
}
}
ボタンをクリックすると、3つのアイテムが追加されますが、リストビューには反映されません。 ObservableCollectionを使用して双方向にバインディングを設定することのほかに何かを行う必要がありますか?
になっているはずです。私はWinRTでプログラミングするのが初めてであるため、ObservableCollectionを誤用している可能性があります。最初に、ObservableCollectionからMyItemListを派生させた場合、アイテムが親セットMyItemListに追加された場合、getEvenのデータフィルタリングセットが更新されるのですか、それともまだICollectionViewを使用する必要がありますか?第2に、アイテムがMyItemListに追加されたときにICollectionView(ObservableCollectionからMyItemListを派生しない)のみを使用すると、フィルタリングセットが更新されますか?再度、感謝します! – user1205746
気にしないでください...私はあなたの説明をより慎重に読んだ後にそれを得たと思います。最初にObservableCollectionの新しい概念で私の周りを知りません、あなたの説明はすべて..新しいリストが作成され、そのリストはobservablecollectionではありません。とった! – user1205746
私は今あなたの説明を理解しているようですが、何かがまだ私を悩ましています。元のMyListItemに変更が加えられた場合、getEvenのObservableCollectionは影響を受けないと私は理解しています。しかし、getEvenに通知し、getEvenでObservableCollectionに設定した変更をトリガーする方法はありますか?それはあなたに理にかなっていますか? – user1205746