Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
dotnet add WpfControlsAndAPIs package Microsoft.EntityFrameworkCoredotnet add WpfControlsAndAPIs package Microsoft.EntityFrameworkCore.SqlServerdotnet add WpfControlsAndAPIs package Microsoft.Extensions.Configurationdotnet add WpfControlsAndAPIs package Microsoft.Extensions.Configuration.JsonЗатем щелкните правой кнопкой мыши на имени решения, выберите в контекстном меню пункт Add►Existing Project (Добавить►Существующий проект) и добавьте проекты
AutoLot.DalAutoLot.Dal.Modelsdotnet sln .Chapter25_AllProjects.sln add ..Chapter_23AutoLot.Modelsdotnet sln .Chapter25_AllProjects.sln add ..Chapter_23AutoLot.Daldotnet add WpfControlsAndAPIs reference ..Chapter_23AutoLot.Modelsdotnet add WpfControlsAndAPIs reference ..Chapter_23AutoLot.DalУбедитесь, что в проекте
AutoLot.DalAutoLot.Dal.ModelsMainWindow.xaml.csusing System.Linq;using AutoLot.Dal.EfStructures;using AutoLot.Dal.Repos;using Microsoft.EntityFrameworkCore;using Microsoft.Extensions.Configuration;Добавьте в
MainWindow.csIConfigurationApplicationDbContextprivate IConfiguration _configuration;private ApplicationDbContext _context;Добавьте новый метод по имени
GetConfigurationAndContext()IConfigurationApplicationDbContextprivate void GetConfigurationAndDbContext(){ _configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", true, true) .Build(); var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>(); var connectionString = _configuration.GetConnectionString("AutoLot"); optionsBuilder.UseSqlServer(connectionString, sqlOptions => sqlOptions.EnableRetryOnFailure()); _context = new ApplicationDbContext(optionsBuilder.Options);}Добавьте в проект новый файл JSON по имени
appsettings.json<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.csConfigureGrid()ApplicationDbContextprivate 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 также поддерживается уникальная программная концепция под названием свойство зависимости.