using System; using System.ComponentModel; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; using WpfApp1.model; namespace WpfApp1 { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window, INotifyPropertyChanged { private string searchFilter = ""; private void SearchFilter_KeyUp(object sender, KeyEventArgs e) { searchFilter = SearchFilterTextBox.Text; Invalidate(); } private bool sortAsc = true; private void RadioButton_Checked(object sender, RoutedEventArgs e) { sortAsc = (sender as RadioButton).Tag.ToString() == "1"; Invalidate(); } public event PropertyChangedEventHandler PropertyChanged; private void Invalidate() { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("CarList")); } public string selectedname = "Все автомобили"; public Carsprice? selectedprice = null; private IEnumerable _CarList; public IEnumerable CarList { get { var res = _CarList; res = res .Where(c => (c.name == selectedname || selectedname == "Все автомобили")) .Where(c => (selectedprice == null || (c.price >= selectedprice.priceFrom && c.price < selectedprice.priceTo))); if (searchFilter != "") res = res.Where(c => c.name.IndexOf( searchFilter, StringComparison.OrdinalIgnoreCase) >= 0); if (sortAsc) res = res.OrderBy(c => c.year); else res = res.OrderByDescending(c => c.year); return res; } set { _CarList = value; } } public List Cars { get; set; } public List CarinfoList { get; set; } public List CarpriceList { get; set; } public MainWindow() { InitializeComponent(); Style buttonStyle = new Style(); buttonStyle.Setters.Add( new Setter { Property = Control.FontFamilyProperty, Value = new FontFamily("Verdana") }); buttonStyle.Setters.Add( new Setter { Property = Control.MarginProperty, Value = new Thickness(10) }); buttonStyle.Setters.Add( new Setter { Property = Control.BackgroundProperty, Value = new SolidColorBrush(Colors.Black) }); buttonStyle.Setters.Add( new Setter { Property = Control.ForegroundProperty, Value = new SolidColorBrush(Colors.White) }); buttonStyle.Setters.Add( new EventSetter { Event = Button.ClickEvent, Handler = new RoutedEventHandler(Button_Click) }); ExitButton.Style = buttonStyle; DataContext = this; Globals.dataProvider = new JSONDataProvider(); CarList = Globals.dataProvider.getCars(); CarinfoList = Globals.dataProvider.getName().ToList(); CarinfoList.Insert(0, new Namecar { title = "Все автомобили" }); CarpriceList = Globals.dataProvider.getPrice().ToList(); } private string currentStyle = "StackStyle"; private void ToggleView_Click(object sender, RoutedEventArgs e) { currentStyle = currentStyle == "StackStyle" ? "WrapStyle" : "StackStyle"; var newStyle = (Style)TryFindResource(currentStyle); if (newStyle != null) carListBox.Style = newStyle; } private void Button_Click(object sender, RoutedEventArgs e) { Button clickedButton = (Button)sender; MessageBox.Show(clickedButton.Content.ToString()); } private void ExitButton_Click(object sender, RoutedEventArgs e) { Application.Current.Shutdown(); } private void carnameFilterComboBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { selectedname = (carnameFilterComboBox.SelectedItem as Namecar).title; Invalidate(); } private void carpriceFilterComboBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { selectedprice = carpriceFilterComboBox.SelectedItem as Carsprice; Invalidate(); } } interface IDataProvider { IEnumerable getCars(); IEnumerable getName(); IEnumerable getPrice(); } public class LocalDataProvider : IDataProvider { public IEnumerable getName() { return new Namecar[] { new Namecar() { title="Toyota Trueno AE86" }, new Namecar() { title="Toyota Supra A80" }, new Namecar() { title="Nissal Skyline R34" }, new Namecar() { title="Nissan Silvia S15" }, new Namecar() { title="Toyota Camry 3.5" }, new Namecar() { title="Audi RS 6" }, new Namecar() { title="Трактор LOVOL TE354 HT" }, new Namecar() { title="BMW M5 F90" }, new Namecar() { title="BMW E36" }, new Namecar() { title="Daewoo Matiz" } }; } public IEnumerable getPrice() { return new Carsprice[] { new Carsprice() { title="Все цены", priceFrom=0, priceTo=70000 }, new Carsprice() { title="Малая цена", priceFrom=0, priceTo=15001 }, new Carsprice() { title="Средняя цена", priceFrom=20000, priceTo=35000 }, new Carsprice() { title="Высокая цена", priceFrom=35001, priceTo=70000 } }; } public IEnumerable getCars() { return new cars[] { new cars { price = 15000, name = "Toyota Trueno AE86", year = 1995, }, new cars { price = 30000, name = "Toyota Supra A80", year = 1996, }, new cars { price = 25000, name = "Nissal Skyline R34", year = 1996 }, new cars { price = 20000, name = "Nissan Silvia S15", year = 1999, }, new cars { price = 20000, name = "Toyota Camry 3.5", year = 2020, }, new cars { price = 30000, name = "Audi RS 6", year = 2016, }, new cars { price = 66666, name = "Трактор LOVOL TE354 HT", year = 2024, }, new cars { price = 30000, name = "BMW M5 F90", year = 2019, }, new cars { price = 35000, name = "BMW E36", year = 2006, }, new cars { price = 20000, name = "Daewoo Matiz", year = 2010, }, }; } } }