Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 510 511 512 513 514 515 516 517 518 ... 642

dotnet add WpfControlsAndAPIs package Microsoft.EntityFrameworkCore

dotnet add WpfControlsAndAPIs package Microsoft.EntityFrameworkCore.SqlServer

dotnet add WpfControlsAndAPIs package Microsoft.Extensions.Configuration

dotnet add WpfControlsAndAPIs package Microsoft.Extensions.Configuration.Json

Затем щелкните правой кнопкой мыши на имени решения, выберите в контекстном меню пункт AddExisting Project (Добавить►Существующий проект) и добавьте проекты AutoLot.Dal и AutoLot.Dal.Models из главы 23, а также ссылки на эти проекты. Сделать это можно также с помощью интерфейса командной строки, выполнив показанные ниже команды (вам придется скорректировать пути к проектам согласно требованиям имеющейся операционной системы):

dotnet sln .Chapter25_AllProjects.sln add ..Chapter_23AutoLot.Models

dotnet sln .Chapter25_AllProjects.sln add ..Chapter_23AutoLot.Dal

dotnet add WpfControlsAndAPIs reference ..Chapter_23AutoLot.Models

dotnet add WpfControlsAndAPIs reference ..Chapter_23AutoLot.Dal

Убедитесь, что в проекте AutoLot.Dal все еще присутствует ссылка на проект AutoLot.Dal.Models. Добавьте в файл MainWindow.xaml.cs следующие пространства имен:

using System.Linq;

using AutoLot.Dal.EfStructures;

using AutoLot.Dal.Repos;

using Microsoft.EntityFrameworkCore;

using Microsoft.Extensions.Configuration;

Добавьте в MainWindow.cs два свойства уровня модуля для хранения экземпляров реализации IConfiguration и класса ApplicationDbContext:

private IConfiguration _configuration;

private ApplicationDbContext _context;

Добавьте новый метод по имени GetConfigurationAndContext() для хранения экземпляров реализации IConfiguration и класса ApplicationDbContext и вызовите его в конструкторе. Вот полный код метода:

private void GetConfigurationAndDbContext()

{

  _configuration = new ConfigurationBuilder()

    .SetBasePath(Directory.GetCurrentDirectory())

    .AddJsonFile("appsettings.json", true, true)

    .Build();

  var optionsBuilder =

    new DbContextOptionsBuilder<ApplicationDbContext>();

  var connectionString =

    _configuration.GetConnectionString("AutoLot");

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  optionsBuilder.UseSqlServer(connectionString,

    sqlOptions => sqlOptions.EnableRetryOnFailure());

  _context = new ApplicationDbContext(optionsBuilder.Options);

}

Добавьте в проект новый файл JSON по имени appsettings.json. Щелкните правой кнопкой мыши на имени этого файла в окне Solution Explorer, выберите в контекстном меню пункт Properties (Свойства) и установите свойство Copy То Output Directory (Копировать в выходной каталог) в Copy always (Всегда копировать). Вы можете добиться того же самого результата с помощью файла проекта:

<ItemGroup>

  <None Update="appsettings.json">

    <CopyToOutputDirectory>Always</CopyToOutputDirectory>

  </None>

</ItemGroup>

Модифицируйте файл JSON, как показано ниже (приведя строку подключения в соответствие со своей средой):

{

  "ConnectionStrings": {

    "AutoLotFinal": "server=.,5433;Database=AutoLot;

    User Id=sa;Password=P@ssw0rd;"

  }

}

Откройте файл MainWindow.xaml.cs, добавьте последнюю вспомогательную функцию по имени ConfigureGrid() и вызовите ее в конструкторе после конфигурирования ApplicationDbContext. Понадобится добавить лишь несколько строк кода:

private void ConfigureGrid()

{

  using var repo = new CarRepo(_context);

  gridInventory.ItemsSource = repo

    .GetAllIgnoreQueryFilters()

    .ToList()

    .Select(x=> new {

      x.Id,

      Make=x.MakeName,

      x.Color,

      x.PetName

    });

}

Запустив проект, вы увидите данные, заполняющие сетку. При желании сделать сетку более привлекательной можно применить окно Properties в Visual Studio для редактирования свойств сетки, чтобы улучшить ее внешний вид.

На этом текущий пример завершен. В последующих главах вы увидите в действии другие элементы управления, но к настоящему моменту вы должны чувствовать себя увереннее с процессом построения пользовательских интерфейсов в Visual Studio, а также при работе с разметкой XAML и кодом С#.

Роль свойств зависимости

Подобно любому API-интерфейсу .NET Core внутри WPF используется каждый член системы типов .NET Core (классы, структуры, интерфейсы, делегаты, перечисления) и каждый член типа (свойства, методы, события, константные данные, поля только для чтения и т.д.). Однако в WPF также поддерживается уникальная программная концепция под названием свойство зависимости.

1 ... 510 511 512 513 514 515 516 517 518 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий