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

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

Читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

<Grid Grid.Row="1" Name="DetailsGrid"

<b>  DataContext=&quot;{Binding ElementName=cboCars, Path=SelectedItem}&quot;&gt;</b>

Текстовые поля в элементе DetailsGrid будут отображать индивидуальные характеристики выбранного автомобиля. Добавьте подходящие атрибуты Text и привязки к элементам управления TextBox:

&lt;TextBox Grid.Column=&quot;1&quot; Grid.Row=&quot;0&quot; Text=&quot;{Binding Path=Id}&quot; /&gt;

&lt;TextBox Grid.Column=&quot;1&quot; Grid.Row=&quot;1&quot; Text=&quot;{Binding Path=Make}&quot; /&gt;

&lt;TextBox Grid.Column=&quot;1&quot; Grid.Row=&quot;2&quot; Text=&quot;{Binding Path=Color}&quot; /&gt;

&lt;TextBox Grid.Column=&quot;1&quot; Grid.Row=&quot;3&quot; Text=&quot;{Binding Path=PetName}&quot; /&gt;

Наконец, поместите нужные данные в элемент управления ComboBox. В файле MainWindow.xaml.cs создайте новый список записей Car и присвойте его свойству ItemsSource элемента ComboBox. Кроме того, добавьте оператор using для пространства имен WpfNotifications.Models.

using WpfNotifications.Models;

// Для краткости код не показан.

public partial class MainWindow : Window

{

  readonly IList&lt;Car&gt; _cars = new List&lt;Car&gt;();

  public MainWindow()

  {

    InitializeComponent();

    _cars.Add(new Car {Id = 1, Color = &quot;Blue&quot;, Make = &quot;Chevy&quot;,

                       PetName = &quot;Kit&quot;});

    _cars.Add(new Car {Id = 2, Color = &quot;Red&quot;, Make = &quot;Ford&quot;,

                       PetName = &quot;Red Rider&quot;});

    cboCars.ItemsSource = _cars;

    }

}

Запустите приложение. Вы увидите, что в поле со списком Vehicle для выбора доступны два варианта автомобилей. Выбор одного из них приводит к автоматическому заполнению текстовых полей сведениями об автомобиле. Измените цвет одного из автомобилей, выберите другой автомобиль и затем возвратитесь к автомобилю, запись о котором редактировалась. Вы обнаружите, что новый цвет по-прежнему связан с автомобилем. Здесь нет ничего примечательного, просто демонстрируется мощь привязки данных XAML.

Изменение данных об автомобиле в коде

Несмотря на то что предыдущий пример работает ожидаемым образом, когда данные изменяются программно, пользовательский интерфейс не отразит изменения до тех пор, пока в приложении не будет предусмотрен код для обновления данных. Чтобы проиллюстрировать сказанное, добавьте обработчик события Click для кнопки btnChangeColor:

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

Button x:Name=&quot;btnChangeColor&quot; Content=&quot;Change Color&quot; Margin=&quot;5,0,5,0&quot;

    Padding=&quot;4, 2&quot; Click=&quot;BtnChangeColor_OnClick&quot;/&gt;

Внутри обработчика события BtnChangeColor_OnClick() с помощью свойства SelectedItem элемента управления ComboBox отыщите выбранную запись в списке автомобилей и измените ее цвет на Pink:

private void BtnChangeColor_OnClick(object sender, RoutedEventArgs e)

{

  _cars.First(x =&gt; x.Id == ((Car)cboCars.SelectedItem)?.Id).Color = &quot;Pink&quot;;

}

Запустите приложение, выберите автомобиль и щелкните на кнопке Change Color (Изменить цвет). Никаких видимых изменений не произойдет. Выберите другой автомобиль и затем снова первоначальный. Теперь вы заметите обновленное значение. Для пользователя такое поведение не особенно подходит.

Добавьте обработчик события Click для кнопки btnAddCar:

&lt;Button x:Name=&quot;btnAddCar&quot; Content=&quot;Add Car&quot; Margin=&quot;5,0,5,0&quot; Padding=&quot;4, 2&quot;

  Click=&quot;BtnAddCar_OnClick&quot; /&gt;

В обработчике события BtnAddCar_OnClick() добавьте новую запись в список Car:

private void BtnAddCar_Click(object sender, RoutedEventArgs e)

{

  var maxCount = _cars?.Max(x =&gt; x.Id) ?? 0;

  _cars?.Add(new Car { Id=++maxCount,Color=&quot;Yellow&quot;,Make=&quot;VW&quot;,PetName=&quot;Birdie&quot;});

}

Запустите приложение, щелкните на кнопке Add Car (Добавить автомобиль) и просмотрите содержимое элемента управления ComboBox. Хотя известно, что в списке имеется три автомобиля, в элементе ComboBox отображаются только два! Чтобы устранить обе проблемы, вы превратите класс Car в наблюдаемую модель и будете использовать наблюдаемую коллекцию для хранения всех экземпляров Car.

Наблюдаемые модели

Проблема с тем, что изменение значения свойства модели не отображается в пользовательском интерфейсе, решается за счет реализации классом модели Car интерфейса INotifyPropertyChanged. Интерфейс INotifyPropertyChanged содержит единственное событие PropertyChangedEvent. Механизм привязки XAML прослушивает это событие для каждого привязанного свойства в классах, реализующих интерфейс INotifyPropertyChanged. Вот как определен интерфейс INotifyPropertyChanged:

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Язык программирования C#9 и платформа .NET5 отзывы

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


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*