На основном экране есть два ListView.
В первом выводится список продукции, во втором корзина. В режиме админа По клику на продукции я могу отредактировать удалить продукции, и список обновляется.
Когда я добавляю в корзину эту продукцию, список не обновляется. Как сделать, чтобы второй Listview обновлялся?
Вот код класса:
public partial class MainWindow : Window, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public event PropertyChangedEventHandler PropertyChanged1;
// public IEnumerable<Sale> SaleList { get; set; }
public MainWindow()
{
InitializeComponent();
DataContext = this;
Globals.DataProvider = new MySQLDataprovider();
ProductType1();
productMetod();
productMetod1();
metodA();
}
private async void productMetod1()
{
ProductTypeList = (await Globals.DataProvider.GetProductTypes()).ToList();
}
private async void productMetod()
{
/*получение товара list*/
TovarList = await Globals.DataProvider.GetTovar();
}
private async void ProductType1()
{
ProductTypes = await Globals.DataProvider.GetProductTypes();
}
private async void metod()
{
TovarList = await Globals.DataProvider.GetTovar();
}
private IEnumerable<Sale> _SaleList;
public IEnumerable<Sale> SaleList
{
get {
var Result = _SaleList;
return Result;
}
set
{
_SaleList = value;
Invalidate1();
}
}
private void ProductListView_MouseDoubleClick_1(object sender, MouseButtonEventArgs e)
{
var NewSaleWindow = new SaleWindow(ProductListView.SelectedItem as Tovar);
if ((bool)NewSaleWindow.ShowDialog())
{
metodA();
Invalidate1();
}
}
private void metodA()
{
SaleList = Globals.DataProvider.GetSale();
}
//вот этот работает метод и обновляет список
private void Invalidate()
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("TovarList")
);
}
//а вот это не работает
private void Invalidate1(string ComponentName = "SaleList")
{
if (PropertyChanged1 != null)
PropertyChanged1(this, new PropertyChangedEventArgs(ComponentName));
}
public Sale ChangedProduct11 { get; set; }
}
}
ICollectionView– aepot Mar 28 '22 at 10:30ObservableCollection, для изменяемых списков просто используйте ее вместоList. – aepot Mar 28 '22 at 10:42async voidи все получится, используйтеasync Taskиawait,async voidтолько в обработчиках событий уместен, и то не всегда. – aepot Mar 28 '22 at 12:24voidнаTask. Тогда они будут выполняться последовательно, а не вразнобой. Если надо вразнобой, то естьawait Task.WhenAll(методы)https://docs.microsoft.com/ru-ru/dotnet/csharp/async – aepot Mar 28 '22 at 12:26