Определение пути в пользовательском элементе управления вызывает ошибку компиляции: XDG0012 Элемент «Загружен» не распознан или недоступен

У меня был Dictionary.xaml, где я определил путь, указанный здесь, но у меня была ошибка компиляции (см. ошибку ниже).

Поскольку я хочу повторно использовать его в других местах, @Clemens предложил мне поместить его в пользовательский элемент управления WPF, поэтому я сделал это, но у меня по-прежнему возникает ошибка ниже: RoutedEvent Loaded не распознан.

<UserControl x:Class="my.UI.UC.MyUserControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://chemas.microsoft.com/expression/blend/2008"
             mc:Ignorable="d" 
             d:DesignHeight="200" d:DesignWidth="200">
    <Grid>
        <Path x:Name="SpinnerPath" Data="M100,10 A90,90 0 0 1 190,100"
              Width="24" Height="24"
              Stroke="Green" StrokeThickness="20"
              StrokeStartLineCap="Round" StrokeEndLineCap="Round"
              RenderTransformOrigin="0.5,0.5">
            <Path.RenderTransform>
                <RotateTransform />
            </Path.RenderTransform>
            <Path.Triggers>
                <EventTrigger RoutedEvent="Loaded">
                    <BeginStoryboard>
                        <Storyboard TargetProperty="RenderTransform.Angle">
                            <DoubleAnimation By="360" 
                                             Duration="0:0:1"
                                             RepeatBehavior="Forever"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Path.Triggers>
        </Path>
    </Grid>
</UserControl>

Компилятор выдает ошибку компиляции:

XDG0012 Элемент "Загружен" не распознан или недоступен

Мне не хватает ссылки на какое-то пространство имен в моем словаре? Если да, то какое пространство имен?

Теперь, когда вы знаете, что Путь работает, не забудьте принять ответ на свой предыдущий вопрос.

Clemens 21.11.2022 18:30

Можете ли вы объяснить, почему вы хотите, чтобы этот путь был ресурсом XAML?

Clemens 21.11.2022 18:33

@ Клеменс Я сделаю. Теперь я пытаюсь определить ваш путь в словаре.xaml, а затем привязать его к представлению. Теперь я посмотрю, сработает ли это, и я поставил ваш ответ как принятый в своем другом вопросе.

Willy 21.11.2022 18:34

Это не объяснение. Обычно вы не объявляете элементы пользовательского интерфейса как ресурсы XAML.

Clemens 21.11.2022 18:36

@Clemens, потому что в зависимости от обстоятельств я хочу показать путь или нет. Затем программно я собираюсь установить для него значение null или привязать его к статическому ресурсу.

Willy 21.11.2022 18:37

У вас может быть геометрия (данные) в качестве ресурса. Загрузите его как Data="{DynamicResource myArc}" или около того.

Clemens 21.11.2022 18:37

@Clemens Я хотел бы повторно использовать этот путь во всех моих окнах wpf. Это причина.

Willy 21.11.2022 18:39

Поместите его в UserControl.

Clemens 21.11.2022 18:39

@Clemens В пользовательском элементе управления WPF? Ммм, это звучит очень хорошо!

Willy 21.11.2022 18:41

@Clemens Я поместил его в пользовательский элемент управления WPF и получаю ту же ошибку. Загруженное событие не распознано.

Willy 21.11.2022 18:53

Понятия не имею, что именно ты сделал. Может быть, задать другой вопрос или отредактировать этот. Однако сначала примите ответы. То, что вы здесь спрашиваете, не имеет ничего общего с вашей предыдущей проблемой.

Clemens 21.11.2022 19:00
Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
0
11
163
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны сохранить размер пути, иначе Data и StrokeThickness не поместятся.

Поместите путь в поле просмотра и установите ширину и высоту пользовательского элемента управления.

<UserControl x:Class="my.UI.UC.MyUserControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             Width="24" Height="24">
    <Viewbox>
        <Path Data="M100,10 A90,90 0 0 1 190,100"
              Width="200" Height="200" Stretch="None"
              Stroke="Green" StrokeThickness="20"
              StrokeStartLineCap="Round" StrokeEndLineCap="Round"
              RenderTransformOrigin="0.5,0.5">
            <Path.RenderTransform>
                <RotateTransform />
            </Path.RenderTransform>
            <Path.Triggers>
                <EventTrigger RoutedEvent="Loaded">
                    <BeginStoryboard Name="LoadedStoryboard">
                        <Storyboard TargetProperty="RenderTransform.Angle">
                            <DoubleAnimation By="360" Duration="0:0:1"
                                             RepeatBehavior="Forever"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
                <EventTrigger RoutedEvent="Unloaded">
                    <StopStoryboard BeginStoryboardName="LoadedStoryboard"/>
                </EventTrigger>
            </Path.Triggers>
        </Path>
    </Viewbox>
</UserControl>

Итак, как я вижу, RoutedEvent Loaded распознается в окне просмотра. Не могли бы вы объяснить мне, почему? Также высота и ширина пути всегда должны быть такими же, больше или меньше высоты и ширины пользовательского элемента управления?

Willy 21.11.2022 20:15

Событие также распознается любым другим контейнером. Пути просто не было видно.

Clemens 21.11.2022 20:17

Это еще один вопрос, но... чтобы остановить потребление ресурсов при выполнении анимации, когда пользовательский элемент управления не виден, есть ли простой способ остановить анимацию, когда она не видна?

Willy 21.11.2022 20:18

Путь должен быть достаточно большим, чтобы показать нерастянутую геометрию. Любое растяжение потеряет центральную точку и, таким образом, исказит вращение.

Clemens 21.11.2022 20:18

Когда UserControl не виден, событие Loaded не срабатывает.

Clemens 21.11.2022 20:19

Итак, представьте, что я делаю UserControl видимым (который находится внутри другого UserControl), и начинается анимация. Позже, если я сделаю этот UserControl невидимым, я думаю, он автоматически остановит анимацию. Прав ли я тогда?

Willy 21.11.2022 20:25

См. редактирование для Unloaded EventTrigger. Для видимости используйте триггер в стиле пути.

Clemens 21.11.2022 20:28

И, возможно, получите книгу WPF, где вы можете прочитать обо всех этих вещах. Я могу порекомендовать WPF Unleashed Адама Натана.

Clemens 21.11.2022 20:29

Итак, когда UserControl делается невидимым (после его показа), выполняется триггер Unloaded, поэтому раскадровка останавливается и больше не потребляет ресурсы. Верно? Спасибо за вашу помощь.

Willy 21.11.2022 20:47

Что касается видимости, здесь есть пример, который делает то же самое более или менее: stackoverflow.com/a/17575345/1624552

Willy 21.11.2022 20:55

Другие вопросы по теме