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

        FontSize="20" Background="{DynamicResource myBrush}"/>

Мастер создания ресурсов определил новый ресурс как динамический (Dynamic Resource). Динамические ресурсы рассматриваются позже, а пока поменяйте тип ресурса на статический (StaticResource):

    FontSize="20" Background="{StaticResource myBrush}"/>

Чтобы оценить преимущества, модифицируйте свойство Background кнопки Cancel (Отмена), указав в нем тот же самый ресурс StaticResource, после чего можно будет видеть повторное использование в действии:

    FontSize="20" Background="{StaticResource myBrush}"/>

<p id="AutBody_Root1216"><strong>Расширение разметки {StaticResource}</strong></p>

Расширение разметки {StaticResource} применяет ресурс только один раз (при инициализации) ион остается "подключенным" к первоначальному объекту на протяжении всей времени жизни приложения. Некоторые свойства (вроде градиентных переходов) будут обновляться, но в случае создания нового элемента Brush, например, элемент управления не обновится. Чтобы взглянуть на такое поведение в действии, добавьте свойство Name и обработчик события Click к каждому элементу управления Button:

    FontSize="20" Background="{StaticResource myBrush}" Click="Ok_OnClick"/>

    FontSize="20" Background="{StaticResource myBrush}" Click="Cancel_OnClick"/>

Затем поместите в обработчик события Ok_OnClick() следующий код:

private void Ok_OnClick(object sender, RoutedEventArgs e)

{

  // Получить кисть и внести изменение.

  var b=(RadialGradientBrush)Resources["myBrush"];

  b.GradientStops[1]=new GradientStop(Colors.Black, 0.0);

}

На заметку! Здесь для поиска ресурса по имени используется индексатор Resources. Тем не менее, имейте в виду, что если ресурс найти не удастся, тогда будет сгенерировано исключение времени выполнения. Можно также применять метод TryFindResource(), который не приводит к генерации исключения, а просто возвращает null, если указанный ресурс не найден.

Запустив программу и щелкнув на кнопке ОК, вы заметите,что градиенты соответствующим образом изменяются. Добавьте в обработчик события Cancel_OnClick() такой код:

private void Cancel_OnClick(object sender, RoutedEventArgs e)

{

  // Поместить в ячейку myBrush совершенно новую кисть.

  Resources["myBrush"]=new SolidColorBrush(Colors.Red);

}

Снова запустив программу и щелкнув на кнопке Cancel, вы обнаружите, что ничего не происходит!

<p id="AutBody_Root1217"><strong>Расширение разметки {DynamicResource}</strong></p>

Для свойства также можно использовать расширение разметки DynamicResource. Чтобы выяснить разницу, измените разметку для кнопки Cancel, как показано ниже:

    FontSize="20" Background="{DynamicResource myBrush}" Click="Cancel_OnClick"/>

На этот раз в результате щелчка на кнопке Cancel цвет фона для кнопки Cancel изменяется, а цвет фона для кнопки ОК остается прежним. Причина в том, что расширение разметки {DynamicResource} способно обнаруживать замену внутреннего объекта, указанного посредством ключа, новым объектом. Как и можно было предположить, такая возможность требует дополнительной инфраструктуры времени выполнения, так что {StaticResource} обычно следует использовать, только если не планируется заменять объектный ресурс другим объектом во время выполнения с уведомлением всех элементов, которые задействуют данный ресурс.

<p id="AutBody_Root1218"><strong>Ресурсы уровня приложения</strong></p>

Когда в словаре ресурсов окна имеются объектные ресурсы, их могут потреблять все элементы этого окна, но не другие окна приложения. Решение совместно использовать объектные ресурсы в рамках приложения предусматривает их определение на уровне приложения, а не на уровне какого-то окна. В Visual Studio отсутствуют способы автоматизации такого действия, а потому необходимо просто вырезать имеющееся определение объекта кисти из области Windows.Resource и поместить его в область Application.Resources файла Арр.xaml.

Теперь любое дополнительное окно или элемент управления в приложении в состоянии работать с данным объектом кисти. Ресурсы уровня приложения доступны для выбора при установке свойства Background элемента управления (рис. 27.5).

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

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных

Все жанры