Первоначальный алгоритм. Создали класс бд, создали класс frame. В MainWindow инициализировали бд и фрейм, сделали переход на следующее окно(авторизация) class db: class db { public static Entities tbe; } ----------------- class Frame class MainFrame { public static Frame frame; } ----------------- class User - объединить в одну строку public string FullName { get { return UserSurname + " " + UserName + " " + UserPatronymic; } } ----------------- style App ----------------- окно MainWindow public MainWindow() { InitializeComponent(); db.tbe = new Entities(); MainFrame.frame = fMain; MainFrame.frame.Navigate(new AuthorizationPage()); } ----------------- Капча AuthPage(первое окно) private DispatcherTimer dispatcher; public static bool checkedCaptcha; private int counter = 10; public AuthorizationPage() { InitializeComponent(); dispatcher = new DispatcherTimer(); dispatcher.Interval = new TimeSpan(0, 0, 0, 1); dispatcher.Tick += new EventHandler(TimerEnd); } private void TimerEnd(object sender, EventArgs e) { try { if (counter != 0) { tbAuth.Text = "Новый код доступен через \n\t" + string.Format("00:00:{0}", counter) + " секунд "; } else { btnAuth.IsEnabled = true; gpPassword.IsEnabled = true; gpLogin.IsEnabled = true; tbAuth.Visibility = Visibility.Collapsed; dispatcher.Stop(); } counter--; } catch { MessageBox.Show("Дваайте еще раз попробуем"); } } private void btnAuth_Click(object sender, RoutedEventArgs e) { User user = db.tbe.User.FirstOrDefault(x => x.UserPassword == tbPassword.Text && x.UserLogin == tbLogin.Text); try { if (user == null) { //tbLogin.Text != user.UserLogin && tbPassword.Text != user.UserPassword MessageBox.Show("Введенный логин и/или пароль неверен"); Captcha captcha = new Captcha(); captcha.Show(); captcha.Closing += (obj, args) => { if (!checkedCaptcha) { btnAuth.IsEnabled = false; gpPassword.IsEnabled = false; gpLogin.IsEnabled = false; counter = 10; dispatcher.Start(); } }; } else { if (!string.IsNullOrEmpty(tbLogin.Text) && !string.IsNullOrEmpty(tbPassword.Text)) { if (tbLogin.Text != null && tbPassword.Text != null) { if (user.UserLogin == tbLogin.Text) { if (user.UserPassword == tbPassword.Text) { NavigationService.Navigate(new PageProducts(user)); } else { MessageBox.Show("Пароль в системе отсутствует"); } } else { MessageBox.Show("Логин в системе отсутствует"); } } } else { MessageBox.Show("Неверный логин и/или пароль!"); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } ----------------- Страница с выводом: В инициализации: db.tbe = new Entities(); lvProduct.ItemsSource = db.tbe.Product.ToList(); lvProduct.SelectedValuePath = "ProductArticleNumber"; tblast.Text = db.tbe.Product.Count().ToString(); // вывод 15 tbFirst.Text = lvProduct.Items.Count.ToString(); // вывод 47 ----------------- ----------------- 1.ListView 2.ListView.ItemTemplate 3.DataTemplate 4.Grid В конце можно изьебнуться и вставить. При нажатии на контекстное меню добавляется товар в заказ а в коде public static List articleProducts = new List(); private void MenuItem_Click(object sender, RoutedEventArgs e) { btnOrder.Visibility = Visibility.Visible; articleProducts.Add(lvProduct.SelectedValue.ToString()); } Создать кнопку btnorder private void btnOrder_Click(object sender, RoutedEventArgs e) { Window1 window = new Window1(user); window.Show(); window.Closing += (obj, args) => { if (articleProducts.Count == 0) { btnOrder.Visibility = Visibility.Collapsed; } else { btnOrder.Visibility = Visibility.Visible; } }; } ----------------- Просмотр заказа (корзина) Разметка: public partial class Captcha : Window { public static bool checkedCaptcha; int num = 0; public Captcha() { InitializeComponent(); CreateImg(); } private void CreateImg() { Random random = new Random(); num = random.Next(1000, 9999); var pixels = new byte[Convert.ToInt32(CaptchaImage.Width) * Convert.ToInt32(CaptchaImage.Height) * 4]; random.NextBytes(pixels); BitmapSource bitmapSource = BitmapSource.Create(Convert.ToInt32(CaptchaImage.Width), Convert.ToInt32(CaptchaImage.Height), 96, 96, PixelFormats.Bgra32, null, pixels, Convert.ToInt32(CaptchaImage.Width) * 4); var visual = new DrawingVisual(); using (DrawingContext drawingContext = visual.RenderOpen()) { drawingContext.DrawText( new FormattedText(num.ToString(), CultureInfo.InvariantCulture, FlowDirection.LeftToRight, new Typeface("Arial"), 100, System.Windows.Media.Brushes.Red), new System.Windows.Point(0, CaptchaImage.Height / 2)); drawingContext.DrawImage(bitmapSource, new Rect(0, 0, 256, 256)); } var image = new DrawingImage(visual.Drawing); CaptchaImage.Source = image; } private void Button_Click(object sender, RoutedEventArgs e) { if(num == Convert.ToInt32(tbCheckedCaptcha.Text)) { if (!string.IsNullOrEmpty(tbCheckedCaptcha.Text)) { MessageBox.Show("Код введен верно."); AuthorizationPage.checkedCaptcha = true; this.Close(); } else { MessageBox.Show("Введите код для капчи"); } } else { MessageBox.Show("Код введен неверно."); AuthorizationPage.checkedCaptcha = false; this.Close(); } } } ----------------- Классы ----------------- Article public class Article { public string article { get; set; } public int count { get;set; } } ----------------- db class db { public static Entities tbe; } ----------------- Frame class MainFrame { public static Frame frame; } ----------------- PartialEditedOrder - парш на смена цвета смену цвета ----------------- public partial class Product { public SolidColorBrush colorBrushes { get { if (ProductQuantityInStock > 3) { SolidColorBrush scb = (SolidColorBrush)new BrushConverter().ConvertFromString("#20b2aa"); return scb; } else { SolidColorBrush scb1 = (SolidColorBrush)new BrushConverter().ConvertFromString("#ff8c00"); return scb1; } } } } ----------------- PartialProduct. Вывод скидки товра. Вывод скидка товара. Закрашивание на ListView ----------------- public double ActualPrice { get { if (ProductDiscountAmount != null) { double ammount = Convert.ToDouble(ProductCost) - Convert.ToDouble(ProductCost) / 100 * Convert.ToDouble(ProductDiscountAmount); return ammount; } else { return Convert.ToDouble(ProductCost); } } } public SolidColorBrush colorBrush { get { if (ProductDiscountAmount > 15) { SolidColorBrush solidColorBrush = new SolidColorBrush(Color.FromRgb(127, 255, 0)); return solidColorBrush; } else { SolidColorBrush solidColorBrush = new SolidColorBrush(Color.FromRgb(255, 255, 255)); return solidColorBrush; } } } ----------------- Объединение ФИО В одно public partial class User { public string FullName { get { return UserSurname + " " + UserName + " " + UserPatronymic; } } } ----------------- SaleClass ----------------- public class SaleClass { public Order order { get; set; } public double Sale { get; set; } } ----------------- SummClass public class SummClass { public Order order { get; set; } public int Summa { get; set; } public double SALE { get; set; } } ----------------- Объединение городов в комбобокс на странице WindowOrder public partial class Point { public string displayPoint { get { string str = indexPoint.ToString() + " " + cityPoint + " " + streetPoint + " " + homePoint.ToString(); return str; } } } ----------------- Тут ведется вывод старой цены и новой цены с учетом скидки