Язык программирования C#9 и платформа .NET5
Шрифт:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace: CustomDependencyProperty"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Label x:Name="numberDisplay" Height="50" Width="200"
Background="LightBlue"/>
</Grid>
</UserControl>
В
int
и устанавливает новое значение для свойства Content
элемента Label
:
public partial class ShowNumberControl : UserControl
{
public ShowNumberControl
{
InitializeComponent;
}
// Обычное свойство .NET Core.
private int _currNumber = 0;
public int CurrentNumber
{
get => _currNumber;
set
{
_currNumber = value;
numberDisplay.Content = CurrentNumber.ToString;
}
}
}
Обновите определение XAML в
MainWindow.xml
, объявив экземпляр специального элемента управления внутри диспетчера компоновки StackPanel
. Поскольку специальный элемент управления не входит в состав основных сборок WPF, понадобится определить специальное пространство имен XML, которое отображается на него. Вот требуемая разметка:
<Window x:Class="CustomDepPropApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:myCtrls="clr-namespace: CustomDependencyProperty"
xmlns:local="clr-namespace: CustomDependencyProperty"
mc:Ignorable="d"
Title="Simple Dependency Property App" Height="450" Width="450"
WindowStartupLocation="CenterScreen">
<StackPanel>
<myCtrls:ShowNumberControl
HorizontalAlignment="Left" x:Name="myShowNumberCtrl"
CurrentNumber="100"/>
</StackPanel>
</Window>
Похоже,
CurrentNumber
(рис. 25.23). Однако что, если к свойству
CurrentNumber
необходимо применить объект анимации, который обеспечит изменение значения свойства от 100 до 200 в течение 10 секунд? Если это желательно сделать в разметке, тогда область myCtrls:ShowNumberControl
можно изменить следующим образом:
<myCtrls:ShowNumberControl x:Name="myShowNumberCtrl" CurrentNumber="100">
<myCtrls:ShowNumberControl.Triggers>
<EventTrigger RoutedEvent = "myCtrls:ShowNumberControl.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard TargetProperty = "CurrentNumber">
<Int32Animation From = "100" To = "200" Duration = "0:0:10"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</myCtrls:ShowNumberControl.Triggers>
</myCtrls:ShowNumberControl>
После запуска приложения объект анимации не сможет найти подходящую цель и сгенерируется исключение. Причина в том, что свойство
CurrentNumber
не было зарегистрировано как свойство зависимости! Чтобы устранить проблему, возвратитесь в файл кода для специального элемента управления и полностью закомментируйте текущую логику свойства (включая закрытое поддерживающее поле). Теперь добавьте показанный ниже код, чтобы свойство
CurrentNumber
создавалось как свойство зависимости:
public int CurrentNumber
{
get => (int)GetValue(CurrentNumberProperty);
set => SetValue(CurrentNumberProperty, value);
}
public static readonly DependencyProperty CurrentNumberProperty =
DependencyProperty.Register("CurrentNumber",
Поделиться:
Популярные книги
Солнечный корт
4. Все ради игры
Фантастика:
зарубежная фантастика
5.00
рейтинг книги
О, мой бомж
1. Несвятая троица
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Возвышение Меркурия. Книга 2
2. Меркурий
Фантастика:
фэнтези
5.00
рейтинг книги
Вы не прошли собеседование
1. Укротить миллионера
Любовные романы:
короткие любовные романы
5.00
рейтинг книги
Метаморфозы Катрин
Фантастика:
фэнтези
8.26
рейтинг книги
Эволюция мага
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Попаданка для Дракона, или Жена любой ценой
Любовные романы:
любовно-фантастические романы
7.17
рейтинг книги
Истинная поневоле, или Сирота в Академии Драконов
3. Академия Драконов, или Девушки с секретом
Любовные романы:
любовно-фантастические романы
6.37
рейтинг книги
Сумеречный Стрелок 5
5. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 17
17. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Переиграть войну! Пенталогия
Переиграть войну!
Фантастика:
героическая фантастика
альтернативная история
8.25
рейтинг книги
Волков. Гимназия №6
1. Волков
Фантастика:
попаданцы
альтернативная история
аниме
7.00
рейтинг книги
Картофельное счастье попаданки
Фантастика:
фэнтези
5.00