Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
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
Затем щелкните правой кнопкой мыши на имени решения, выберите в контекстном меню пункт Add►Existing Project (Добавить►Существующий проект) и добавьте проекты
AutoLot.Dal
AutoLot.Dal.Models
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");
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.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 также поддерживается уникальная программная концепция под названием свойство зависимости.