// Поскольку заботиться здесь о "двунаправленной" привязке
// не нужно, просто возвратить значение value.
return value;
}
}
}
Метод
Convert
вызывается при передаче значения от источника (
ScrollBar
) к цели (свойство
Content
элемента
Label
). Хотя он принимает много входных
аргументов, для такого преобразования понадобится манипулировать только входным аргументом типа
object
, который представляет текущее значение
double
. Данный тип можно использовать для приведения к целому и возврата нового числа.
Метод
ConvertBack
будет вызываться, когда значение передается от цели к источнику (если включен двунаправленный режим привязки). Здесь мы просто возвращаем значение
value
. Это позволяет вводить в
TextBox
значение с плавающей точкой (например,
99.9
) и автоматически преобразовывать его в целочисленное значение (
99
), когда пользователь перемещает фокус из элемента управления. Такое "бесплатное" преобразование происходит из-за того, что метод
Convert
будет вызываться еще раз после вызова
ConvertBack
. Если просто возвратить
null
из
ConvertBack
, то синхронизация привязки будет выглядеть нарушенной, т.к. элемент
TextBox
по-прежнему будет отображать число с плавающей точкой.
Чтобы применить построенный преобразователь в разметке, сначала нужно создать локальный ресурс, представляющий только что законченный класс. Не переживайте по поводу механики добавления ресурсов; тема будет детально раскрыта в нескольких последующих главах. Поместите показанную ниже разметку сразу после открывающего дескриптора
, которая может выглядеть несколько необычной — вызов
SetBinding
. Обратите внимание, что первый параметр обращается к статическому, доступному только для чтения полю
ContentProperty
класса
Label
. Как вы узнаете далее в главе, такая конструкция называется свойством зависимости. Пока просто имейте в виду, что при установке привязки в коде первый аргумент почти всегда требует указания имени класса, нуждающегося в привязке (
Label
в рассматриваемом случае), за которым следует обращение к внутреннему свойству с добавлением к его имени суффикса
Property
. Запустив приложение, можно удостовериться в том, что элемент
Label
отображает только целые числа.
Построение вкладки DataGrid
В предыдущем примере привязки данных иллюстрировался способ конфигурирования двух (или большего количества) элементов управления для участия в операции привязки данных. Наряду с тем, что это удобно, возможно также привязывать данные из файлов XML, базы данных и объектов в памяти. Чтобы завершить текущий пример, вы должны спроектировать финальную вкладку элемента управления
DataGrid
, которая будет отображать информацию, извлеченную из таблицы
Inventory
базы данных
AutoLot
.
Как и с другими вкладками, начните с замены текущего элемента
Grid
панелью
StackPanel
, напрямую обновив разметку XAML в Visual Studio. Внутри нового элемента
StackPanel
определите элемент управления
DataGrid
по имени
gridInventory
:
<TabItem x:Name="tabDataGrid" Header="DataGrid">
<StackPanel>
<DataGrid x:Name="gridInventory" Height="288"/>
</StackPanel>
</TabItem>
С помощью диспетчера пакетов NuGet добавьте в проект следующие пакеты:
•
Microsoft.EntityFrameworkCore
•
Microsoft.EntityFrameworkCore.SqlServer
•
Microsoft.Extensions.Configuration
•
Microsoft.Extensions.Configuration.Json
Если вы предпочитаете добавлять пакеты в интерфейсе командной строки .NET Core, тогда введите приведенные далее команды (в каталоге решения):