No Description

ivasileva 1ad341696d Обновить 'readme.md' 1 week ago
WpfApp1 16c408e17c Загрузить файлы 'WpfApp1/Image' 1 week ago
.gitignore 10c321860b newОбновить 'readme.md' 3 weeks ago
WpfApp1.sln 5fa8618c75 Обновить 'readme.md' 2 weeks ago
readme.md 1ad341696d Обновить 'readme.md' 1 week ago

readme.md

Получение данных из внешних источников. JSON.

MainWindow.xaml

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        Title="MainWindow" Height="450" Width="800">
    <Grid ShowGridLines="False">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="auto"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <StackPanel
            HorizontalAlignment="Center"
            Grid.Row="1"
            VerticalAlignment="Bottom">
            <Button
                x:Name="ExitButton"
                Content="Выход"
                Click="ExitButton_Click"
                Height="50"
                Width="200"/>
        </StackPanel>
        <Image 
       Source="/Image/logo.png" 
       Grid.RowSpan="1"/>
        <ListBox
            x:Name="CafeListBox"
            Grid.Row="0"
            Grid.Column="1"
            ItemsSource="{Binding CafeList}"
            ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel 
                        Orientation="Horizontal"
                        VerticalAlignment="Center">
                        <Image
                            Width="100"
                            Height="100"
                            Source="{Binding imageBitmap}"/>
                        <StackPanel>
                                <TextBlock
                                Text="{Binding Id, StringFormat='Номер заказа: {0}'}"/>
                                <TextBlock
                                Text="{Binding Title, StringFormat='Название блюда: {0}'}"/>
                                <TextBlock
                                Text="{Binding Category.Name, StringFormat='Категория: {0}'}"/>
                            <TextBlock
                                Text="{Binding Price, StringFormat='Цена: {0}'}"/>
                            <TextBlock
                                Text="Для веганов: "/>
                                <CheckBox IsChecked="{Binding IsVegetarian}"/>
                                <TextBlock
                                Text="{Binding ExpirationLast, StringFormat='Срок годности: dd.MM.yyyy'}"/>
                            </StackPanel>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
   </Grid>
    
</Window>

xaml.cs

namespace WpfApp1
{
    public partial class MainWindow : Window
    {
        public IEnumerable<Cafe> CafeList { get; set; }
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
            Globals.dataProvider = new JSONDataProvider();
            CafeList = Globals.dataProvider.getCafe();
        }
        private void ExitButton_Click(object sender, RoutedEventArgs e)
        {
            Application.Current.Shutdown();

        }
    }
}

JSONDataProvider

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WpfApp1.Model;
using CsvHelper;
using System.Globalization;
using System.Runtime.Serialization.Json;

namespace WpfApp1.Classes
{
    public class JSONDataProvider : IDataProvider
    {
        private List<Cafe> _cafes;
        public JSONDataProvider()
        {
            var serializer = new DataContractJsonSerializer(typeof(Cafe[]));
            using (var sr = new FileStream("./cafe.json", FileMode.Open))
            {
                Cafe[] cafe = (Cafe[])serializer.ReadObject(sr);               
                _cafes = new List<Cafe>(cafe);              
            }
        }
        public IEnumerable<Cafe> getCafe()
        {
            return _cafes;
        }
    }
}

cafe.json

[
    {
        "Id": 1,
        "Title": "Burger",
        "IsVegetarian": false,
        "Expiration": "2025-03-25",
        "Price": 100,
        "Category": { "Name": "Fastfood" },
        "Photo": "1.jpg"
    },
    {
        "Id": 2,
        "Title": "MacaroniAndCheese",
        "IsVegetarian": true,
        "Expiration": "2025-03-03",
        "Price": 140,
        "Category": { "Name": "Fastfood" },
        "Photo": "2.jpg"
    },
    {

        "Id": 3,
        "Title": "Shikaka",
        "IsVegetarian": true,
        "Expiration": "2025-03-06",
        "Price": 110,
        "Category": { "Name": "Salads" },
        "Photo": "3.jpg"
    },
    {

        "Id": 4,
        "Title": "HotDog",
        "IsVegetarian": false,
        "Expiration": "2025-03-04",
        "Price": 120,
        "Category": { "Name": "Hotdishes" },
        "Photo": "4.jpg"
    },
    {

        "Id": 5,
        "Title": "Pizza",
        "IsVegetarian": false,
        "Expiration": "2025-03-26",
        "Price": 110,
        "Category": { "Name": "Fastfood" },
        "Photo": "5.jpg"
    },
    {

        "Id": 6,
        "Title": "CaesarWithChicken",
        "IsVegetarian": false,
        "Expiration": "2025-03-08",
        "Price": 160,
        "Category": { "Name": "Salads" },
        "Photo": "6.jpg"
    },
    {

        "Id": 7,
        "Title": "Olivier",
        "IsVegetarian": false,
        "Expiration": "2025-03-29",
        "Price": 140,
        "Category": { "Name": "Salads" },
        "Photo": "7.jpg"
    },
    {

        "Id": 8,
        "Title": "GrilledChicken",
        "IsVegetarian": false,
        "Expiration": "2025-03-18",
        "Price": 200,
        "Category": { "Name": "Hotdishes" },
        "Photo": "8.jpg"
    },
    {
        "Id": 9,
        "Title": "HerringUnderAFurCoat",
        "IsVegetarian": false,
        "Expiration": "2025-03-16",
        "Price": 160,
        "Category": { "Name": "Salads" },
        "Photo": "9.jpg"
    },
    {
        "Id": 10,
        "Title": "Nuggets",
        "IsVegetarian": false,
        "Expiration": "2025-03-26",
        "Price": 180,
        "Category": { "Name": "Fastfood" },
        "Photo": "10.jpg"
    }
]