WPF в С# проблема с custom

164
16 июля 2018, 20:20

Есть код XAML и есть класс CustomVisualFrameworkElement, который унаследован от FrameworkElement и реализует с помощью Visual некоторые фигуры. Но XAML почему то не видит данный класс, хотя я подключаю пространство, которое содержит класс CustomVisualFrameworkElement

КОД XAML:

<Window x:Class="RenderingWithVisuals.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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:RenderingWithVisuals" //Вот тут я подключаю пространство в котором находится класс CustomVisualFrameworkElement       
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
    <StackPanel Name="MyStackPAnel">
        <Image Height="80" Name="MyImage" />
        <!--Теперь используем наш класс, который содержит в себе фигуры и инфраструктуру от FrameworkElement-->
        <custom: CustomVisualFrameworkElement/> //Вот тут не видит класс
    </StackPanel>
</Window>

Answer 1

Если с кодом всё в порядке, помогает следующий алгоритм:

  1. Убрать из XAML <local:CustomVisualFrameworkElement/>,
  2. Перекомпилировать проект и убедиться, что он компилируется без ошибок,
  3. Добавить <local:CustomVisualFrameworkElement/> назад.

Разоблачение магии: WPF компилирует проект в два прохода: сначала XAML (при этом генерируется код на C#), потом весь code-behind. Если у вас есть свежий класс в code-behind, который упомянут в XAML'е, то при компиляции XAML'а его ещё не видно, и первый этап компиляции проваливается. Убирая новый элемент, мы даём первому этапу компиляции завершиться, и компилятор наконец-то видит новый класс.

Да, это баг в Visual Studio.

READ ALSO
Unity экземпляры класса и ссылки на объекты

Unity экземпляры класса и ссылки на объекты

Возник один вопрос по игровому движку UnityДопустим я хочу создать экземпляр класса Camera

159
С# передача файла в теле POST запроса

С# передача файла в теле POST запроса

Возникла задача отправлять email напрямую из программыПо мимо просто текста прикреплять файл лога к письму

146
C# System.IO unauthorizedaccessexception

C# System.IO unauthorizedaccessexception

Делаю поиск файла на всех дисках доступных на компе:

167