私はWindows開発には新しく、もちろんMetroスタイルのアプリケーション開発にはさらに新しくなっています。私はデータバインディングがどのように機能するのか分かりません。要素が追加された後にListViewを更新する
私はアイテムのリストを持っています。
private List<Expense> _expenses = new List<Expense>();
public List<Expense> Items
{
get
{
return this._expenses;
}
}
私はXAMLにバインドします。 (私はスプリットページテンプレートを使用)
protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.DefaultViewModel["Items"] = _data.Items;
}
それから私はそれを正常に動作
<UserControl.Resources>
<CollectionViewSource
x:Name="itemsViewSource"
Source="{Binding Items, Mode=TwoWay}"/>
</UserControl.Resources>
<ListView
x:Name="itemListView"
AutomationProperties.AutomationId="ItemsListView"
AutomationProperties.Name="Items"
Margin="120,0,0,60"
ItemsSource="{Binding Source={StaticResource itemsViewSource}}"
SelectionChanged="ItemListView_SelectionChanged"
ItemTemplate="{StaticResource DefaultListItemTemplate}"/>
を表示します。ユーザーがボタンをクリックするととき、私は私がMode=TwoWay
を設定するのでListView
が自動的にリフレッシュすることを期待していた
_data.Items.Add(new Expense
{
Total = 100,
When = new DateTime(2013, 6, 6),
For = "Myself"
});
私のリストに新しい項目を追加しますが、それはしません。私は概念を誤解していましたが、リストをリフレッシュすることはできませんでしたか?さもなければ、私は何が間違っていますか?
大変感謝しています。同じテーマで、オブジェクト自体が変更されたときに通知する方法は? – Jonas
@Jonasオブジェクト自体は 'INotifyPropertyChanged'を実装する必要があります – JaredPar
素晴らしいです。ありがとう@ JaredPar – Jonas