在過去的三天,我一直面臨着相當多的複合問題。我正在嘗試訂購應用程序,爲此我想要一個包含MainCategory項目的ObservableCollection。現在,MainCategory項目包含一個CategoryName和另一個ObservableCollection菜餚。這些菜有道具:名稱,價格和數量。我做了所有這些,綁定和一切都很完美。的ObservableCollection內的ObservableCollection doen't火集合更改事件
問題出在頁面的底部(ListView之外,它嵌套在一個Listview中)我想要一個帶有TotalValue的TextBlock,每次都需要改變盤的數量改變。我正在使用MVVM,並且我已經完成了對道具和CollectionChanged的所有INotifyPropertyChanged,但這隻適用於添加或刪除內容。不是當我改變第二個ObservableCollection中的道具的值時。
下面是一些代碼:
public class MenuCollection : ObservableCollection<MainCategories>,
INotifyCollectionChanged, INotifyPropertyChanged
{
public MenuCollection()
{
Add(new MainCategories("Category1", false));
this[0].SubMenuItems.Add(new Dishes("Dish1", 4));
}
}
public class MainCategories : MainViewModelBase
{
public ObservableCollection<Dishes> SubMenuItems{get; set;}
public MainCategories(string name, bool visible)
{
this.categoryName = name;
this.visible = visible;
SubMenuItems = new ObservableCollection<Dishes>();
}
public string categoryName;
public string CategoryName
{
get { return categoryName; }
set
{
if (categoryName != value)
{
categoryName = value;
OnPropertyChanged("CategoryName");
}
}
}
public bool visible;
public bool Visible
{
get { return visible; }
set
{
if (visible != value)
{
visible = value;
OnPropertyChanged("Visible");
}
}
}
}
public class Dishes : MainViewModelBase
{
public Dishes(string dishName, int price)
{
this.dishName = dishName;
this.dishPrice = price;
this.quantity = 0;
}
private string dishName;
public string DishName
{
get { return dishName; }
set
{
if (dishName != value)
{
dishName = value;
OnPropertyChanged("DishName");
}
}
}
private int dishPrice;
public int DishPrice
{
get { return dishPrice; }
set
{
if (dishPrice != value)
{
dishPrice = value;
OnPropertyChanged("DishPrice");
}
}
}
private int quantity;
public int Quantity
{
get { return quantity; }
set
{
if (quantity != value)
{
quantity = value;
OnPropertyChanged("Quantity");
}
}
}
}
我只是想找到一種方法,讓我的總價值將得到更新主要觀察集合裏面有什麼變化,就像一個產品的數量。無論如何發射CollectionChanged事件?
*「的主要觀察集合裏面有什麼變化,就像一個產品的數量時,反正是有火的CollectionChanged事件」 *這已'CollectionChanged'完全沒有關係。它是'INotifyPropertyChanged'。你得到的是一個醜陋的問題。 'MainCategories'需要處理其集合中所有'Dishes'的'PropertyChanged'。當要加總的屬性發生變化時,'MainCategories'重新計算總和並將其分配給一個屬性,也許是'MainCategories.Sum'。 'MenuCollection'與其項目的'Sum'屬性相同。 XAML綁定到MainCollection.Sum –